【发布时间】:2016-04-06 17:30:51
【问题描述】:
我制作了一个 CSV 文件来存储一些数据,如下所示:
img = loadmat('test.mat')
a,b,c = np.shape(img) # c is the no. of slices
for i in range(c):
feature_1 = #kurtosis of image slice
feature_2 = #entropy of image slice
.
.
feature_8 = #skewness of image slice
train_data = np.concatenate((feature_1,feature_2,...,feature_8),axis=1)
#this loop will repeat for all the slices and result will be appended in another array
train_data01.append(train_data)
#this will give a list with all data in one axis.
feature_img = np.concatenate(train_data01,axis=0)
#this will give a array of size (mx8) where m is the number of pixels in image.
np.savetxt('savedata.csv',feature_img,fmt = '%4.2f') #save teh data in csv file
现在我尝试像这样检索数据:
hg01 = []
with open('savedata.csv','rb') as f:
reader = csv.reader(f)
for row in reader:
hg01.append(row)
hg01 = np.concatenate(hg01, axis = 0)
hg01_feature = np.empty(shape=(np.shape(hg01)[0],80), dtype='float32')
for i in range(np.shape(hg01)[0]):
a = hg01[i]
b = np.fromstring(a,dtype='float32',sep=' ')
np.append(np.transpose(hg01_feature[i,:]),b,axis=1)
现在的问题是 hg01 的 numpy 数组的实际尺寸是 1520640x80,大小约为 644MB。现在,在第 6 位患者之后,我的系统出现故障,并且在加载第 7 位患者数据时,它在以下行显示内存错误:
hg07 = np.concatenate(hg07, axis = 0)
所以伙计们,我有大约 40 个患者数据以及如何加载这些数据。 我正在使用随机森林进行图像分类。我的系统有 8 GB 内存。
【问题讨论】:
-
np.loadtxt或np.genfromtxt通常可以处理 CSV 文件,例如np.savetxt编写的文件。 -
不要使用
np.append(像那样)。 -
@hpaulj:您能否建议任何其他方法来回答(以及示例)。谢谢
-
如果在加载过程中出现内存错误,在处理过程中也会出现。
-
@hpaulj:没错。但解决方案是什么。如何处理这个庞大的数据。你能告诉我,如果我对一个 numpy 数组进行采样,它会影响它的信息内容以及如何去做(如果可能的话)。
标签: python csv numpy image-processing