numpy,用数组替换列

时间:2019-04-12 15:27:09

标签: python numpy

我正在尝试用相同长度的新数组替换一列或几列。

a = np.array([[1,2,3],[1,2,3],[1,2,3]])
b = np.array([[0,0,0])
a[:, 0] = b

我遇到了ValueError: could not broadcast input array from shape (3,1) into shape (3)错误。但是,当b具有多个列时,此方法有效。

a = np.array([[1,2,3],[1,2,3],[1,2,3]])
b = np.array([[0,7],[0,7],[0,7]])
a[:, 0:2] = b

array([[0, 7, 3],
       [0, 7, 3],
       [0, 7, 3]])

如何有效地将列替换为另一个数组?

谢谢

J

2 个答案:

答案 0 :(得分:3)

如果您像使用a[:, 0:2] = b一样使用以下内容,则您的示例将正常工作。 [:, 0:1]实际上只是第一列

a = np.array([[1,2,3],[1,2,3],[1,2,3]])
b = np.array([[0],[0],[0]])
a[:, 0:1] = b

# array([[0, 2, 3],
#        [0, 2, 3],
#        [0, 2, 3]])

答案 1 :(得分:2)

您的import numpy as np np.r_[range(1,4), range(6,11)] # array([ 1, 2, 3, 6, 7, 8, 9, 10]) 形状不正确。如果您只想替换一列,则应该将普通的一维数组传递给它:

b

返回:

a = np.array([[1,2,3],[1,2,3],[1,2,3]])
b = np.array([0,0,0])
a[:, 0] = b
a