首页 > 解决方案 > Numpy 数组(追加、连接)

问题描述

我正在尝试将“平均值”添加到其他 numpy 数组“所有平均值”,但附加、连接返回错误:

n1, n2, n3  = 5 , 16, 27
all_averages = np.array ([], dtype = float)
for i in range(1000):
    sample_2 = pareto.rvs (7, size = n1)
    average = np.array([np.average(sample_2)])
    all_averages.append(average)

'numpy.ndarray' 对象没有属性 'append'

n1, n2, n3  = 5 , 16, 27
all_averages = np.array ([], dtype = float)
for i in range(1000):
    sample_2 = pareto.rvs (7, size = n1)
    average = np.array([np.average(sample_2)])
    np.concatenate((all_averages, average))
print(all_averages)

[]

我错过了什么?

标签: pythonnumpy

解决方案


Numpy 数组不像 python 列表,它们有固定的大小。这就是你找不到append方法的原因。

但是,您真的很接近解决方案:np.concatenate不能就地工作,而是返回连接数组。你应该环顾四周

all_averages = np.concatenate((all_averages, average))

为了提高效率,请尝试只执行一项concatenate操作。将所有平均值存储在一个列表中,然后将它们连接在一起。这样,您将避免数组之间不必要的复制

n1, n2, n3  = 5 , 16, 27
all_averages_list = []
for i in range(1000):
    sample_2 = pareto.rvs (7, size = n1)
    average = np.array([np.average(sample_2)])
    all_averages_list.append(average)
all_averages = np.concatenate(all_averages_list, axis=0) # check axis param, I'm not sure here
print(all_averages)

推荐阅读