Python 在列约束下选择nparray的某些行
我有两张票 尺寸的Python 在列约束下选择nparray的某些行,python,numpy,Python,Numpy,我有两张票 尺寸的A(60000784) 及 尺寸的B(60000,1) 它们都存储整数 我想创建一个包含A中的行的nparray,这样B的对应行就是某个数字X或某个数字Y。我还想返回第二个包含B的对应行的nparray 例如: A 1 2 3 4 5 6 8 9 B 2 5 6 1 假设我想要A的行,使得B的对应行是1或5。然后返回的第一个nparray将如下所示: 3 4 8 9 5 1 第二个N阵列将是: 3 4 8 9 5 1 在NParray中可能出现这样的情况吗 提
A
(60000784)
及
尺寸的B
(60000,1)
它们都存储整数
我想创建一个包含A
中的行的nparray,这样B
的对应行就是某个数字X或某个数字Y。我还想返回第二个包含B
的对应行的nparray
例如:
A
1 2
3 4
5 6
8 9
B
2
5
6
1
假设我想要A的行,使得B的对应行是1或5。然后返回的第一个nparray将如下所示:
3 4
8 9
5
1
第二个N阵列将是:
3 4
8 9
5
1
在NParray中可能出现这样的情况吗
提前感谢使用
np.inad
创建布尔索引
A = np.array([[1, 2], [3, 4], [5, 6], [8, 9]])
B = np.array([2,5,6,1])
index = np.in1d(B, [1,5])
print A[index]
print B[index]
请您添加一个小示例,显示
a
和B
以及您的预期输出,好吗?我刚刚添加了一个小示例。谢谢对于x
和y
的两个值,索引=(B==x)|(B==y)
的速度要快得多(尽管对于非常大的B
,差异会减小)。@askewchan时间差异的顺序是什么?我经常看到这样的评论,但我不确定人们谈论的是绝对时间还是相对时间。是微秒还是秒?嗨,丹,我是相对地说的:或
比给定的示例数组中的快6倍,但这显然不是一个好的测试用例。在问题(60k)中大小的随机数组上,它只快了大约50%。当然,绝对时间很难比较,但在我的电脑上,我们谈论的是毫秒。更仔细地看,最慢的部分实际上是使用布尔索引:A[index]
需要100毫秒:P事实上,在numpy中,尽管其他地方的算法很花哨,但花哨的索引通常是我看到的最慢的部分。但是微改进很有趣!