如何比较两个数组并用多个条件语句创建新数组?

2024-04-26 21:18:56 发布

您现在位置:Python中文网/ 问答频道 /正文

我有两个尺寸相同的数组。我想对这些数组中的值进行多次比较(或运算符),并生成一个具有相同维数的新数组。新数组应该有我指定的值。下面是我要做的一点示范:

In [1]: import numpy

In [2]: import numpy as np

In [3]: x = np.array([5, 2, 3, 1, 4, 5])

In [4]: y = np.array([2, 3, 3, 8, 8, 6])

In [5]: result_array = [y > 3] or [x < 5]

In [6]: print(result_array)
[array([False, False, False,  True,  True,  True], dtype=bool)]

我能够比较多个语句并生成新的数组。但是,我想用值10替换True。所以当我尝试这一行,它给了我一个错误:-你知道吗

result_array = 10 if [y > 3] or [x < 5]:
  File "<ipython-input-21-780bf095bc56>", line 1
    result_array = 10 if [y > 3] or [x < 5]:
                                           ^
SyntaxError: invalid syntax

我期待的是:

[array([False, False, False,  10,  10,  10], dtype=bool)]

感谢您的帮助


Tags: orinimportnumpyfalsetrueif尺寸
2条回答

您可以使用以下方法接近您提到的预期结果:

import numpy as np

x = np.array([5, 2, 3, 1, 4, 5])
y = np.array([2, 3, 3, 8, 8, 6])

result_array = np.where(y > 3, 10, False)
print(result_array)

结果:

[ 0  0  0 10 10 10]

请注意,有0而不是false,因为它只包含数字

您需要将结果转换为整数才能看到1

x = np.array([5, 2, 3, 1, 4, 5])
y = np.array([2, 3, 3, 8, 8, 6])
result_array = np.logical_or(y > 3, x < 5)
res = result_array.astype(int)
res[result_array] = 10
print(res)

输出:

[ 0 10 10 10 10 10]

相关问题 更多 >