我有两个数组 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而不是虚假,因为它仅包含数字