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

Jik*_*ika 11 python arrays numpy

我有这样的数组

import numpy as np

a = np.zeros((2,2), dtype=np.int)
Run Code Online (Sandbox Code Playgroud)

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

a[:][0] = [1, 1] # not working
a[:][0] = [[1], [1]] # not working
Run Code Online (Sandbox Code Playgroud)

相反,当我更换行时,它工作!

a[0][:] = [1, 1] # working
Run Code Online (Sandbox Code Playgroud)

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

Ale*_*ley 27

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

>>> a = np.zeros((2,2), dtype=np.int)
>>> a[:, 0] =  1
>>> a
array([[1, 0],
       [1, 0]])
Run Code Online (Sandbox Code Playgroud)

这a[:, 0]意味着"从列0中选择所有行".该值1在此选定列中广播,生成所需的数组([1, 1]尽管可以,但不必使用列表).

您的语法a[:][0]意味着"从数组中选择所有行a,然后选择第一行".同样,a[0][:]意味着"选择第一行a然后再选择整行".这就是为什么你可以成功地替换行而不是列 - 为轴1而不仅仅是轴0进行选择是必要的.


Zhi*_*iya 7

你可以这样做:

import numpy as np

a = np.zeros((2,2), dtype=np.int)
a[:,0] = np.ones((1,2), dtype=np.int)
Run Code Online (Sandbox Code Playgroud)

请参阅访问 np 矩阵列


Kas*_*mvd 5

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

>>> a[::,0] = 1
>>> a
array([[1, 0],
       [1, 0]])
Run Code Online (Sandbox Code Playgroud)

阅读有关numpy 索引的更多信息。