实际上,numpy的数组机制并不支持空数组。(什么鬼答案?)简单来讲就是numpy会申请连续的内存,如果频繁改变大小,他就要频繁申请新的内存。如果你会c语言知道指针的话,你很容易就能想到他不是list格式而是array格式。
如果你不会c语言,那么也没有关系。不影响。只需要记住,numpy的数组一旦变动大小就会像搬家一样大包小包的带着自己的全部数据,拉家带口的搬到新家,所以,才需要你一开始就将numpy数组的大小设定好。
这也就意味着,你不能从空开始,一点点堆数据。但是你可以赋值啊。举个例子:
sum = np.zeros(shape=(2284,1200))
for i in range(2284):
pic_lab = mini_lab[i,:,:]
pic_flatten = np.reshape(pic_lab,(1,1200))
sum[i] = pic_flatten
一般我们都不会一点谱都没有,真的没谱的话,不如先用python的list,然后再用ndarray = np.array(list)转换好了。
a = []
print(a,type(a)) # [] <class 'list'>
b = np.array(a)
print(b,type(b)) # [] <class 'numpy.ndarray'>