Python 替换三维numpy数组中的值
有两个numpy阵列:Python 替换三维numpy数组中的值,python,arrays,numpy,numpy-ndarray,tensor-indexing,Python,Arrays,Numpy,Numpy Ndarray,Tensor Indexing,有两个numpy阵列: a = np.array([ [ [1,2,3,0,0], [4,5,6,0,0], [7,8,9,0,0] ], [ [1,3,5,0,0], [2,4,6,0,0], [1,1,1,0,0] ] ]) b = np.array([ [ [1,2], [2,3], [3,4] ]
a = np.array([
[
[1,2,3,0,0],
[4,5,6,0,0],
[7,8,9,0,0]
],
[
[1,3,5,0,0],
[2,4,6,0,0],
[1,1,1,0,0]
]
])
b = np.array([
[
[1,2],
[2,3],
[3,4]
],
[
[4,1],
[5,2],
[6,3]
]
])
对于形状:
“a”形:(2,3,5),“b”形:(2,3,2)
我想用数组b
中的元素替换数组a
中的最后两个元素,例如
c = np.array([
[
[1,2,3,1,2],
[4,5,6,2,3],
[7,8,9,3,4]
],
[
[1,3,5,4,1],
[2,4,6,5,2],
[1,1,1,6,3]
]
])
但是,np.hstack((a[:,::-2],b))
抛出一个值错误:
除连接轴之外的所有输入数组维度都必须
完全匹配
一般来说,它看起来不是正确的函数。追加也不起作用
numpy中是否有一种方法可以做到这一点,或者我是否需要使用for循环迭代数组并手动操作它们?您可以像这样使用直接索引:
a[:,:,3:]=b
您可以使用如下直接索引:
a[:,:,3:]=b
非覆盖方法:
获取末尾的零;使用a[:,:,-2::]
a[:,:,:3]
- 根据np.hstack(x)相当于
。由于要将矩阵连接到其最内层行,因此应使用np.concatenate(x,axis=1)
axis=2
获取末尾的零;使用a[:,:,-2::]
a[:,:,:3]
- 根据np.hstack(x)相当于
。由于要将矩阵连接到其最内层行,因此应使用np.concatenate(x,axis=1)
axis=2
a[:,-2:]=b
或者简单地使用省略号符号,a[…,-2:]=b
a[:,-2:]=b
或者简单地使用省略号符号,a[…,-2:]=b
啊,这是第二个轴!!我试着用0和1:facepalm:啊,这是第二个轴!!我尝试使用0和1:facepalm:
>>> np.concatenate((a[:,:,:3], b), axis=2)
array([[[1, 2, 3, 1, 2],
[4, 5, 6, 2, 3],
[7, 8, 9, 3, 4]],
[[1, 3, 5, 4, 1],
[2, 4, 6, 5, 2],
[1, 1, 1, 6, 3]]])