首页 > 解决方案 > 用一个 numpy 数组中的所有零替换

问题描述

我有一个 numpy 数组:

a = np.array([[-1,1,-1],[-1,1,1]])

我的数组只包含两个不同的值:-1 和 1。但是,我想将所有 1 替换为 0,将所有 -1 替换为 1。当然我可以遍历我的数组,检查每个字段的值并替换它。这肯定会起作用,但我一直在寻找一种更方便的方法来做到这一点。

我正在寻找某种

replace(old, new) 

功能。

标签: pythonarraysnumpyreplace

解决方案


你可以试试这个:

import numpy as np


a = np.array([[-1,1,-1],[-1,1,1]])

# approach 1
a[a == 1] = 0
a[a == -1] = 1

# approach 2
mask = a == 1
a[mask] = 0
a[~mask] = 1

print(a)

输出:

[[1 0 1]
 [1 0 0]]

推荐阅读