我有像numpy数组:
A = np.zeros((X,Y,Z))
后来我用数组填充数组,我需要根据z轴上数组的值找到x,y坐标,用不同的数组替换它。
示例Z=2
我有数组
A = [ [ [1,2], [2,1], [0, 0] ],
[ [1,1], [1,1], [0, 0] ], ]
我需要像
这样的东西A[ where A[x,y,:] == [1,2] ] = [2,1]
什么会产生数组
A = [ [ [2,1], [2,1], [0, 0] ],
[ [1,1], [1,1], [0, 0] ], ]
有可能以某种方式简单实现吗?我想避免迭代x,y坐标。
答案 0 :(得分:3)
一种矢量化方法 -
A[(A == [1,2]).all(-1)] = [2,1]
示例运行 -
In [15]: A
Out[15]:
array([[[1, 2],
[2, 1],
[0, 0]],
[[1, 1],
[1, 2],
[0, 0]]])
In [16]: A[(A == [1,2]).all(-1)] = [2,1]
In [17]: A
Out[17]:
array([[[2, 1],
[2, 1],
[0, 0]],
[[1, 1],
[2, 1],
[0, 0]]])