假设我有一个函数(称为numpyarrayfunction),每次运行它时都会输出一个数组。我想多次运行该函数并存储生成的数组。显然,我正在使用的当前方法 -
numpyarray = np.zeros((5))
for i in range(5):
numpyarray[i] = numpyarrayfunction
生成错误消息,因为我试图在数组中存储数组。
最后,我想要做的是取数组中数字的平均值,然后取这些平均值的平均值。但就目前而言,了解如何存储数组会很有用!
感谢您的帮助!
答案 0 :(得分:3)
我最初误读了for循环中的内容。您收到错误的原因是因为numpy数组默认只存储数字类型,而numpyarrayfunction
返回一个非数字值(来自名称,可能是另一个numpy数组)。如果该函数已经返回一个完整的numpy数组,那么你可以做更多这样的事情:
arrays = []
for i in range(5):
arrays.append(numpyarrayfunction(args))
然后,您可以像这样取平均值:
avgarray = np.zeros((len(arrays[0])))
for array in arrays:
avgarray += array
avgarray = avgarray/len(arrays)
答案 1 :(得分:3)
正如评论和其他答案已经提出的那样,一个好方法是将numpyarrayfunction
返回的数组存储在普通的Python列表中。
如果您希望所有内容都在一个numpy数组中(例如,内存效率或计算速度),并且numpyarrayfunction
返回的数组具有固定长度n
,您可以制作numpyarray
多维:
numpyarray = np.empty((5, n))
for i in range(5):
numpyarray[i, :] = numpyarrayfunction
然后你可以np.average(numpyarray, axis = 1)
对第二个轴进行平均,这将为你提供一个一维数组,其中包含从numpyarrayfunction
获得的每个数组的平均值。 np.average(numpyarray)
将是所有元素的平均值,如果您真的想要平均值的平均值,则为np.average(np.average(numpyarray, axis = 1))
。
更多关于numpy array indexing。