我有一个变量
a
,这是一个数组,我想定义另一个变量b
,它是a
的副本,除了一个条件(比方说,每个非零元素都应该设置为1)。我可以用以下方式写:
>>> import numpy as np
>>> a = np.array([2, 7, -2, 0, 0, 9])
>>> b = np.where(a != 0, 1, 0)
>>> print(b)
>>> array([1, 1, 1, 0, 0, 1])
那很好,但我想我在使用更简单的Python表示法之前遇到过,不使用
numpy
,允许将b
定义为a
的副本,但有一个条件,全部在一行中包含两个等号的代码,是这样的:
b = a[a!=0]=1
上面的方法不起作用,但我希望你能帮我找到我引用的代码或其他某种简化方法
要制作一个数组的副本,其中每个非零元素都被 1 替换并且不使用 numpy,您只需迭代该数组并应用三元运算符,您将在其中定义条件和输出:
import numpy as np
a = np.array([2, 7, -2, 0, 0, 9])
b = [1 if i != 0 else 0 for i in a] # if not zero -> 1; else -> 0
请注意,b 现在是一个“列表”而不是 numpy.array 对象。
你也可以通过使用map和lambda来实现:
b = list(map(lambda number: 1 if number != 0 else 0, a))