在Python for loop中存储数组

2024-09-28 20:20:50 发布

您现在位置:Python中文网/ 问答频道 /正文

假设我有一个函数(称为numpyarrayfunction),每次运行它时都输出一个数组。我想多次运行该函数并存储结果数组。很明显,我现在用的方法-

numpyarray = np.zeros((5))
for i in range(5):
    numpyarray[i] = numpyarrayfunction

生成错误消息,因为我正试图在数组中存储数组。

最后,我想做的是取数组中数字的平均值,然后取这些平均值的平均值。但现在,只知道如何存储数组是很有用的!

谢谢你的帮助!


Tags: 方法函数in消息for错误npzeros
2条回答

我最初误读了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)

正如注释和其他答案已经给出的那样,一个好的方法是将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的更多信息。

相关问题 更多 >