python - 如何根据第三轴上的所有值从numpy数组中获取掩码

标签 python arrays numpy vectorization

我有 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 坐标进行迭代。

最佳答案

一种矢量化方法 -

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]]])

关于python - 如何根据第三轴上的所有值从numpy数组中获取掩码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39931382/

相关文章:

python - 如何在 Python 中追加二维数组的最后一行

python - 如何在 Python 中查找绑定(bind)方法的实例?

用于在 azure 上创建表的 python 脚本

C++函数返回数组

python - 为基于 2D 条件的子集索引大型 3D HDF5 数据集

python - 相当于 NumPy 中的 "whos"命令

python - AES - 如何将字节字符串转换为字节字节字符串?

python - python 中 [x for x in some_list] 类型的构造名称是什么?

php - 混合任何字符串列表(数组)的算法

python - Numpy:获取有关添加功能的帮助