Numpy:根据其某些元素的多个条件选择行
Numpy: Selecting Rows based on Multiple Conditions on Some of its Elements
我相信这不是一个重复的问题,尽管网站上有一些与此问题非常接近的问题。给定某些元素的一组条件,我想从 numpy
列表中分离出一行。这是一个例子,考虑数组 Z
:
>>> Z = [[1,0,3,4], [1,1,3,6], [1,2,3,9], [1,3,4,0], [2,1,4,5]]
>>> Z = np.array(Z)
>>> Z
array([[1, 0, 3, 4],
[1, 1, 3, 6],
[1, 2, 3, 9],
[1, 3, 4, 0],
[2, 1, 4, 5]])
并说我想隔离第一个和第二个元素都是 1
的行。执行的命令应该输出行
np.array([[1, 1, 3, 6]])
但是,如果我按照,做一个直观的扩展,比如:
Z[Z[:,0] == 1 & Z[:,1] == 1, :]
我得到:
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
ValueError: The truth value of an array with more than one element is ambiguous. Use a.any() or a.all()
有什么快速解决办法吗?我不想遍历我的列表。我想知道是否有一种快速的“numpy”方式。
优雅是np.equal
Z[np.equal(Z[:, [0,1]], 1).all(axis=1)]
或者:
Z[np.equal(Z[:,0], 1) & np.equal(Z[:,1], 1)]
我相信这不是一个重复的问题,尽管网站上有一些与此问题非常接近的问题。给定某些元素的一组条件,我想从 numpy
列表中分离出一行。这是一个例子,考虑数组 Z
:
>>> Z = [[1,0,3,4], [1,1,3,6], [1,2,3,9], [1,3,4,0], [2,1,4,5]]
>>> Z = np.array(Z)
>>> Z
array([[1, 0, 3, 4],
[1, 1, 3, 6],
[1, 2, 3, 9],
[1, 3, 4, 0],
[2, 1, 4, 5]])
并说我想隔离第一个和第二个元素都是 1
的行。执行的命令应该输出行
np.array([[1, 1, 3, 6]])
但是,如果我按照
Z[Z[:,0] == 1 & Z[:,1] == 1, :]
我得到:
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
ValueError: The truth value of an array with more than one element is ambiguous. Use a.any() or a.all()
有什么快速解决办法吗?我不想遍历我的列表。我想知道是否有一种快速的“numpy”方式。
优雅是np.equal
Z[np.equal(Z[:, [0,1]], 1).all(axis=1)]
或者:
Z[np.equal(Z[:,0], 1) & np.equal(Z[:,1], 1)]