【发布时间】:2016-12-20 11:48:53
【问题描述】:
我正在尝试获取给定 NumPy 数组 alist 的子集 x,这样每行的第一个元素必须在列表 r em>。
>>> import numpy
>>> alist = numpy.array([(0, 2), (0, 4), (1, 3), (1, 4), (2, 1), (3, 1), (3, 2), (4, 1), (4, 3), (4, 2)])
>>> alist
array([[0, 2],
[0, 4],
[1, 3],
[1, 4],
[2, 1],
[3, 1],
[3, 2],
[4, 1],
[4, 3],
[4, 2]])
>>> r = [1,3]
>>> x = alist[where first element of each row is in r] #this i need to figure out.
>>> x
array([[1, 3],
[1, 4],
[3, 1],
[3, 2]])
在 Python 中执行此操作的任何简单方法(无需循环,因为我有一个大型数据集)?
【问题讨论】:
-
我不明白你为什么不想循环播放?如果你发现第一次出现你可以打破循环,但我没有看到另一种方法,然后检查第一个元素,检查第二个等等,直到你找到它或没有剩余数据
-
@Lex 原生 python 循环比内置 numpy 方法慢得多,后者通常在后台使用编译代码。
-
如果您的问题已得到解答,请考虑接受其中一种解决方案。在此处阅读更多信息 - meta.stackexchange.com/questions/5234/…
标签: python arrays numpy vectorization