2024-09-28 20:20:50 发布
网友
假设我有一个函数(称为numpyarrayfunction),每次运行它时都输出一个数组。我想多次运行该函数并存储结果数组。很明显,我现在用的方法-
numpyarray = np.zeros((5)) for i in range(5): numpyarray[i] = numpyarrayfunction
生成错误消息,因为我正试图在数组中存储数组。
最后,我想做的是取数组中数字的平均值,然后取这些平均值的平均值。但现在,只知道如何存储数组是很有用的!
谢谢你的帮助!
我最初误读了for循环中发生的事情。出现错误的原因是默认情况下numpy数组只存储数值类型,numpyarrayfunction返回一个非数值值(从名称中,可能是另一个numpy数组)。如果该函数已返回完整的numpy数组,则可以执行以下操作:
numpyarrayfunction
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多维:
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))如果您真正想要平均值的平均值。
np.average(numpyarray, axis = 1)
np.average(numpyarray)
np.average(np.average(numpyarray, axis = 1))
关于numpy array indexing的更多信息。
我最初误读了for循环中发生的事情。出现错误的原因是默认情况下numpy数组只存储数值类型,
numpyarrayfunction
返回一个非数值值(从名称中,可能是另一个numpy数组)。如果该函数已返回完整的numpy数组,则可以执行以下操作:然后,取平均值如下:
正如注释和其他答案已经给出的那样,一个好的方法是将
numpyarrayfunction
返回的数组存储在一个普通的Python列表中。如果您希望所有内容都在单个numpy数组中(例如,内存效率或计算速度),并且
numpyarrayfunction
返回的数组具有固定长度n
,则可以使numpyarray
多维:然后你可以做
np.average(numpyarray, axis = 1)
在第二个轴上求平均值,这会给你一个一维数组,它是你从numpyarrayfunction
得到的每个数组的平均值。np.average(numpyarray)
将是所有元素的平均值,或者np.average(np.average(numpyarray, axis = 1))
如果您真正想要平均值的平均值。关于numpy array indexing的更多信息。
相关问题 更多 >
编程相关推荐