首页 > 解决方案 > 在 numpy 数组中将 1 更改为 0 并将 0 更改为 1 而无需循环

问题描述

假设我有一个 numpy 数组,我想将所有 1 交换为 0,将所有 0 交换为 1(该数组将具有其他值,并且 0 和 1 没有什么特别之处)。当然,我可以循环遍历数组并逐个更改它。您可以推荐使用一种有效的方法吗?np.where() 方法是否有此操作的选项?

标签: pythonnumpy

解决方案


这是一种使用np.where, 并在XOR给定值是0或时按位取值的方法1

np.where((a==0)|(a==1), a^1, a)

例如:

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

np.where((a==0)|(a==1), a^1, a)

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

推荐阅读