TypeError: '_io.BufferedWriter' object is not subscriptable

TypeError: '_io.BufferedWriter' object is not subscriptable

我在 .hdf5 文件中存储了一个巨大的数据集,我正试图将其拆分为多个组。 .hdf5 文件包含一个形状为 (2 555 904 x 1024 x 2) 的数组 我的代码的一个小例子如下:

import pickle
import h5py
import numpy as np

f = h5py.File('RML_2018.hdf5', 'r')
# Assembling M-PSK dataset 
PSK_32 = f['X'][0:106496]
PSK_OQ = f['X'][638976:745472]
PSK_2  = f['X'][851968:958464]
PSK_8  = f['X'][958464:1064960]
PSK_16 = f['X'][1277952:1384448]
PSK_Q  = f['X'][2023424:2129920]

M_PSK  = np.concatenate([PSK_32, PSK_OQ, PSK_2, PSK_8, PSK_16, PSK_Q])
print('shape of M_PSK array :',M_PSK.shape)

del PSK_32
del PSK_OQ
del PSK_2
del PSK_8
del PSK_16
del PSK_Q

with open('Data/M_PSK.pkl', 'wb') as f:
    pickle.dump(M_PSK, f, protocol=4)

# Assembling M-APSK dataset
APSK_16 = f['X'][106496:212992]
APSK_32 = f['X'][532480:638976]
APSK_64 = f['X'][1384448:1490944]
APSK_128= f['X'][1597440:1703936]

M_APSK  = np.concatenate([APSK_16, APSK_32, APSK_64, APSK_128])
print('shape of M_APSK array :',M_APSK.shape)

del APSK_16
del APSK_32
del APSK_64
del APSK_128

with open('Data/M_APSK.pkl', 'wb') as f:
    pickle.dump(M_APSK, f, protocol=4)

所以你可以看到我正在读取原始数据集的块,连接它们然后删除以节省内存,最后将连接的数组转储到 .pkl 文件

第一部分还可以。但后来我收到以下错误:

Traceback (most recent call last):
  File "/home/nechi/PycharmProjects/CNN_MR_v2/cnn.py", line 28, in <module>
    APSK_16 = f['X'][106496:212992]
TypeError: '_io.BufferedWriter' object is not subscriptable

谁能告诉我这个错误消息是什么,我明白了吗? 以及如何修复它?

谢谢

我的问题的答案是我打开了同名的.hdf文件和.pkl文件f

f = h5py.File('RML_2018.hdf5', 'r')

with open('Data/M_PSK.pkl', 'wb') as f:
    pickle.dump(M_PSK, f, protocol=4)

这造成了混乱,所以我不得不为文件选择不同的名称,但它起作用了。