修改NumPy数组的特定行/列

时间:2014-11-17 15:14:54

标签: python arrays numpy

如何修改NumPy数组的特定行或列?

例如,我有一个NumPy数组,如下所示:

P = array([[1, 2, 3],
           [4, 5, 6]])

如何将第一行[1, 2, 3]的元素更改为[7, 8, 9],以便P成为:

P = array([[7, 8, 9],
           [4, 5, 6]])

同样,如何将第二列值[2, 5]更改为[7, 8]

P = array([[1, 7, 3],
           [4, 8, 6]])

3 个答案:

答案 0 :(得分:27)

可以使用Python中的方括号索引表示法选择或修改NumPy数组的行和列。

要在2D数组中选择,请使用P[i]。例如,P[0]将返回P的第一行。

要选择,请使用P[:, i]:本质上意味着“选择所有行”。例如,P[:, 1]将从P的第二列中选择所有行。

如果要更改数组的行或列的值,可以将其分配给具有相同长度值的新列表(或数组)。

要更改第一个中的值,请写:

>>> P[0] = [7, 8, 9]
>>> P
array([[7, 8, 9],
       [4, 5, 6]])

要更改第二个中的值,请写:

>>> P[:, 1] = [7, 8]
>>> P
array([[1, 7, 3],
       [4, 8, 6]])

答案 1 :(得分:1)

以类似的方式,如果您只想选择两个最后一列,例如您可以使用的所有行:

print P[:,1:3]

答案 2 :(得分:0)

如果一列中有很多元素:

import numpy as np
np_mat = np.array([[1, 2, 2],
                   [3, 4, 5],
                   [5, 6, 5]])
np_mat[:,2] = np_mat[:,2] * 3
print(np_mat)

它在第三列中乘以3:

    [[ 1  2  6]
     [ 3  4 15]
     [ 5  6 15]]