use*_*251 4 python arrays slice
我想在二维numpy数组上执行切片:
type1_c = type1_c[
(type1_c[:,10]==2) or
(type1_c[:,10]==3) or
(type1_c[:,10]==4) or
(type1_c[:,10]==5) or
(type1_c[:,10]==6)
]
Run Code Online (Sandbox Code Playgroud)
语法看起来正确; 但是我收到以下错误消息:'具有多个元素的数组的真值是不明确的.使用a.any()或a.all()'
我真的不明白出了什么问题.任何的想法?
or当它在两个标量之间时是明确的,但是什么是正确的向量推广?if x == array([0, 0])和y == array([0,1]),应该x or y是(1)False,因为并非所有成对术语or-ed一起为True,(2)为True,因为至少有一对成对or结果为真,(3)array([0, 1]),因为那是a的成对结果or,(4)array([0, 0]),因为[0,0] or [0,1]将返回[0,0],因为非空列表是truthy,所以应该arrayS为?
您可以|在这里使用,并将其视为一个按位问题:
>>> import numpy as np
>>> vec = np.arange(10)
>>> vec[(vec == 2) | (vec == 7)]
array([2, 7])
Run Code Online (Sandbox Code Playgroud)
明确使用numpys向量化逻辑或:
>>> np.logical_or(vec==3, vec==5)
array([False, False, False, True, False, True, False, False, False, False], dtype=bool)
>>> vec[np.logical_or(vec==3, vec==5)]
array([3, 5])
Run Code Online (Sandbox Code Playgroud)
或使用in1d,这在这里效率更高:
>>> np.in1d(vec, [2, 7])
array([False, False, True, False, False, False, False, True, False, False], dtype=bool)
>>> vec[np.in1d(vec, [2, 7])]
array([2, 7])
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2891 次 |
| 最近记录: |