基本的NumPy阵列替换

时间:2016-05-04 14:01:16

标签: python arrays numpy

我对Python 2中的NumPy模块有一个相当基本的问题,特别是trinket.io上的版本。无论方法如何,我都没有看到如何在多维数组中替换多个数组中的值。这是一个例子:

a = numpy.array([1,2,3])
a[0] = 0

print a

a = numpy.array([[1,2,3],[1,2,3]])
a[0][0] = a[1][0] = 0

print a

结果:

array([0, 2, 3], '<class 'int'>')
array([[1, 2, 3], [1, 2, 3]], '<class 'int'>')

我需要能够更改单个值,我的具体代码是:

a = numpy.empty(shape = (8,8,2),dtype = str)

for row in range(a.shape[0]):
  for column in range(a.shape[1]):
    a[row][column][1] = 'a'

感谢您的时间和任何帮助。

2 个答案:

答案 0 :(得分:1)

要更改单个值,您可以执行以下操作:

a[1,2] = 'b'

如果要更改所有阵列,可以执行以下操作:

a[:,:] = 'c'

使用逗号(array[a,b])代替(array[a][b]

答案 1 :(得分:0)

使用numpy版本1.11.0,我得到了

[[0 2 3]
 [0 2 3]]

当我运行你的代码时。我想你的numpy版本更新更好。

正如user3408085所说,正确的做法是a[0,0] = 0更改一个元素或a[:,0]=0如果你真的想要将整个第一列归零。

a[0][0]=0不修改(至少在你的numpy版本中)的原因是a [0]是一个新数组。如果将命令a[0][0]=0分为两行:

b=a[0]
b[0]=0

然后,这修改a的事实是违反直觉的。