英文:
2D array, check which rows are equal to a 1D array
问题
我有一个数组,N
行和2
列,
arr = np.arange(200, dtype=int).reshape(-1, 2)
而你知道arr[50]
是[100, 101]
,但我不知道,所以我写了:
guess = np.array((100, 101), dtype=int)
arr == guess
期望得到一个由N
个元素组成的一维布尔数组,但实际上我得到了一个由N
行和2
列组成的二维布尔数组。
是否有可能得到一个一维布尔数组,它逐个元素地将我的数组的行与猜测数组相等?顺便说一句,不要使用循环。
英文:
I have an array, N
rows and 2
columns,
arr = np.arange(200, dtype=int).reshape(-1,2)
and you know that arr[50]
is [100, 101]
, but I don't know that, so I write
guess = np.array((100, 101), dtype=int)
arr == guess
expecting a 1D boolean array with N
elements, but instead I get a 2D boolean array, N
rows and 2
columns.
Is it possible to have an 1D boolean array, that singles out the rows of my array that are equal, member by member, to the guess array? no loops, by the way.
答案1
得分: 1
你需要使用 all
来确保两列(全部列)都为 True:
(arr == guess).all(axis=1)
输出:
array([False, False, False, False, False, False, False, False, False,
False, False, False, False, False, False, False, False, False,
False, False, False, False, False, False, False, False, False,
False, False, False, False, False, False, False, False, False,
False, False, False, False, False, False, False, False, False,
False, False, False, False, False, True, False, False, False, # 这里是 50
False, False, False, False, False, False, False, False, False,
False, False, False, False, False, False, False, False, False,
False, False, False, False, False, False, False, False, False,
False, False, False, False, False, False, False, False, False,
False, False, False, False, False, False, False, False, False,
False])
注意:我已经将代码部分保留为英文。
英文:
You need to aggregate with all
to ensure having True for both (all) columns:
(arr == guess).all(axis=1)
Output:
array([False, False, False, False, False, False, False, False, False,
False, False, False, False, False, False, False, False, False,
False, False, False, False, False, False, False, False, False,
False, False, False, False, False, False, False, False, False,
False, False, False, False, False, False, False, False, False,
False, False, False, False, False, True, False, False, False, # 50 is here
False, False, False, False, False, False, False, False, False,
False, False, False, False, False, False, False, False, False,
False, False, False, False, False, False, False, False, False,
False, False, False, False, False, False, False, False, False,
False, False, False, False, False, False, False, False, False,
False])
通过集体智慧和协作来改善编程学习和解决问题的方式。致力于成为全球开发者共同参与的知识库,让每个人都能够通过互相帮助和分享经验来进步。
评论