如何用numpy数组中的值替换一列?

时间:2015-03-09 22:31:09

标签: python arrays numpy

我有一个像这样的数组

import numpy as np

a = np.zeros((2,2), dtype=np.int)

我想用值1替换第一列。我做了以下事情:

a[:][0] = [1, 1] # not working
a[:][0] = [[1], [1]] # not working

相反,当我更换行时,它会起作用!

a[0][:] = [1, 1] # working

我有一个大数组,所以我不能用值替换值。

3 个答案:

答案 0 :(得分:21)

您可以按如下方式替换第一列:

>>> a = np.zeros((2,2), dtype=np.int)
>>> a[:, 0] =  1
>>> a
array([[1, 0],
       [1, 0]])

此处a[:, 0]表示"从第0列和第34列中选择所有行。值1将在此选定列中广播,从而生成所需的数组(尽管您可以使用列表[1, 1],但这不是必需的。)

您的语法a[:][0]表示"选择数组a中的所有行,然后选择第一行"。同样,a[0][:]表示"选择a的第一行,然后再次选择整行#34;。这就是为什么你可以成功地替换行而不是列 - 它是为轴1选择所必需的,而不仅仅是轴0。

答案 1 :(得分:4)

您可以这样做:

import numpy as np

a = np.zeros((2,2), dtype=np.int)
a[:,0] = np.ones((1,2), dtype=np.int)

请参阅Accessing np matrix columns

答案 2 :(得分:3)

使用正确的索引选择目标列,然后使用=为其分配值。 Numpy将为您处理剩下的事情。

>>> a[::,0] = 1
>>> a
array([[1, 0],
       [1, 0]])

详细了解numpy indexing