将一个变量定义为带有条件的另一个变量的副本

问题描述 投票:0回答:1

我有一个变量

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

上面的方法不起作用,但我希望你能帮我找到我引用的代码或其他某种简化方法

python numpy variables
1个回答
0
投票

要制作一个数组的副本,其中每个非零元素都被 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))
© www.soinside.com 2019 - 2024. All rights reserved.