我正在尝试使用for循环将2D数组填充为数组变量。我希望从该数组中找到每一列的平均值,并将其输入到新数组中。
但是,我不知道如何将变量输入2D数组。
A_values = numpy.zeros([20, 1])
print(A_values)
for i in range(0,20):
A_values([1,i]) = xa
在此代码中,xa是随每次迭代而变化的变量,长度为402。
我正在尝试获取它,以便二维数组“ A_values”具有402列和20行
答案 0 :(得分:1)
我认为您不能在定义 A_values 后更改其形状。因此,您应该从以下内容开始:
A_values = numpy.zeros([20,402])
如果您的for循环遍历行,则索引应为 [i,1] (numpy数组索引与笛卡尔平面坐标不同)。 / p>
但是您想更改A_values的整个行,为此,您只使用第一个索引:
A_values[row] = some_row
请记住,“ some_row”需要适当的长度,否则会出现ValueError。
您的最终代码如下:
A_values = numpy.zeros([20, 402])
for i in range(0,20):
A_values([i]) = xa
PS:您应该描述所得到的错误,并且如果还需要有关“ xa”值的帮助,请更清楚...
答案 1 :(得分:1)
您是否一定要使用for循环?我问是因为可以通过更简单,更有效的方式解决此问题,例如:
import numpy as np
a_values = np.random.rand(20,402) #Store random values in a_values with a shape of 20 rows and 402 columns
avg_columns = a_values.mean(axis=0) #Calculate the mean of each column
print(avg_columns)
用于生成随机值的文档:numpy.random.rand
编辑:
我假设xa在每次迭代中都是随机的(请确保将其替换为您生成的xa
)。您可以初始化一个空的a_values
数组,并使用xa
在每次迭代中将生成的np.vstack
数组添加到其中。对于第一次迭代,当a_value
为空时,我使其等于xa
(if a_values.size else xa
)。
import numpy as np
a_values = np.array([])
for i in range(20):
xa = np.random.rand(1,402)
a_values = np.vstack([a_values, xa]) if a_values.size else xa
avg_columns = a_values.mean(axis=0) #Average of each column
vstack的文档:numpy.vstack