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



我有两个数组 x y 具有相同的维度。我想在这些数组中进行多个比较(或运算符(值,并生成具有相同维度的新数组。新数组应该具有我分配的值。这是我想做的事情的小展示: -

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。因此,当我尝试此行时,它会给我一个错误: -

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)]

任何帮助都将受到赞赏

您需要将结果转换为整数才能查看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]

您可以接近您提到的结果:

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]

请注意,有0s而不是虚假,因为它仅包含数字

最新更新