用另一个阵列填充2D阵列

时间:2019-11-17 14:53:48

标签: python arrays for-loop multidimensional-array

我正在尝试使用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行

2 个答案:

答案 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为空时,我使其等于xaif 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