Python Numpy:条件搜索排序
我有以下数组Python Numpy:条件搜索排序,python,numpy,search,Python,Numpy,Search,我有以下数组 I0 = np.array([1, 0, 0, 0, 1, 0, 0, 1]) X0 = np.array([1, 3, 4, 4, 5, 6, 7, 8]) I1 = np.array([1, 0, 0, 1, 1, 0, 1]) X1 = np.array([1, 4, 5, 6, 7, 8, 9]) 对于X1中的值,其中I1==1我想找到X0中的索引,其中(I0==1)和(X0对应元素的索引为 Q0 = np.arange(X0.size)[I0 == 0] 所以 另一
I0 = np.array([1, 0, 0, 0, 1, 0, 0, 1])
X0 = np.array([1, 3, 4, 4, 5, 6, 7, 8])
I1 = np.array([1, 0, 0, 1, 1, 0, 1])
X1 = np.array([1, 4, 5, 6, 7, 8, 9])
对于
X1
中的值,其中I1==1
我想找到X0
中的索引,其中(I0==1)和(X0对应元素的索引为
Q0 = np.arange(X0.size)[I0 == 0]
所以
另一方面,我强烈建议将I*
数组设置为布尔值。例如:
I0 = np.array([True, False, False, False, True, False, False, True])
这将允许您直接使用它进行索引,而无需创建另一个临时数组:
X0[I0]
我认为这并不是毫无关系的,因为你所建议的只有在I0
是布尔值的情况下才有效。此外,还有一些numpy函数(where
,nonzero
,flatnonzero
)@Paul.Updated。这是我的错误。这些函数会生成更多临时数组,我建议OP可以部分避免
I0 = np.array([True, False, False, False, True, False, False, True])
X0[I0]