gpt4 book ai didi

python - numpy 将数组作为一个整体进行比较

转载 作者:太空宇宙 更新时间:2023-11-04 08:58:06 24 4
gpt4 key购买 nike

我有一个数组 x=np.array([[0,1,2,],[0,0,0],[3,4,0],[1,2,3]] ),我想获取 x=[0,0,0] 处的索引,即 1。我尝试了 np.where(x==[0,0,0]) 导致 (array([0, 1, 1, 1, 2]), array([0, 0, 1, 2, 2]))。我怎样才能得到想要的答案?

最佳答案

作为@transcranial 解决方案,您可以使用np.all() 来完成这项工作。但是 np.all() 很慢,所以如果您将它应用于大型数组,速度将是您关注的问题。

要测试特定值或特定范围,我会这样做。

x = np.array([[0,1,2],[0,0,0],[3,4,0],[1,2,3],[0,0,0]])

condition = (x[:,0]==0) & (x[:,1]==0) & (x[:,2]==0)
np.where(condition)
# (array([1, 4]),)

它有点难看,但它几乎是 np.all() 解决方案的两倍。

In[23]: %timeit np.where(np.all(x == [0,0,0], axis=1) == True)
100000 loops, best of 3: 6.5 µs per loop
In[22]: %timeit np.where((x[:,0]==0)&(x[:,1]==0)&(x[:,2]==0))
100000 loops, best of 3: 3.57 µs per loop

而且您不仅可以测试相等性,还可以测试范围。

condition = (x[:,0]<3) & (x[:,1]>=1) & (x[:,2]>=0)
np.where(condition)
# (array([0, 3]),)

关于python - numpy 将数组作为一个整体进行比较,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28312374/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com