我试图用相同长度的新数组替换一个或几个列。
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
发布于 2019-04-12 07:33:16
您的b
形状不正确。如果只想替换一个列,则应该将一个普通的一维数组传递给它:
a = np.array([[1,2,3],[1,2,3],[1,2,3]])
b = np.array([0,0,0])
a[:, 0] = b
a
返回:
array([[0, 2, 3],
[0, 2, 3],
[0, 2, 3]])
发布于 2019-04-12 07:31:53
如果您像使用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]])
https://stackoverflow.com/questions/55654972
复制