gpt4 book ai didi

python - 带条件的数组过滤

转载 作者:太空宇宙 更新时间:2023-11-03 18:57:23 25 4
gpt4 key购买 nike

(不确定标题的正确性)

我有一个 numpy.array f 如下:

# id frame x y z

我想要做的是提取某些特定id的轨迹。对于 id==1 我得到例如:

f_1 = f[ f[:,0]==1 ]

并得到

array([[   1.     ,   55.     ,  381.51   , -135.476  ,  163.751  ],
[ 1. , 56. , 369.176 , -134.842 , 163.751 ],
[ 1. , 57. , 357.499 , -134.204 , 163.751 ],
[ 1. , 58. , 346.65 , -133.786 , 163.751 ],
[ 1. , 59. , 336.602 , -133.762 , 163.751 ],
[ 1. , 60. , 326.762 , -135.157 , 163.751 ],
[ 1. , 61. , 315.77 , -135.898 , 163.751 ],
[ 1. , 62. , 303.806 , -136.855 , 163.751 ],
[ 1. , 63. , 291.273 , -138.255 , 163.751 ],
[ 1. , 64. , 278.767 , -139.824 , 163.751 ],
[ 1. , 65. , 266.778 , -141.123 , 163.751 ],
[ 1. , 66. , 255.773 , -142.42 , 163.751 ],
[ 1. , 67. , 244.864 , -143.314 , 163.751 ]])

我的问题是我不确定我是否理解它是如何工作的。通常我期待这样的事情:

f_1 = f[ f[:,0]==1, : ]

这对我来说也有效并且更有意义。 (获取所有列,但仅获取满足所需条件的行)

有人可以解释为什么这种形式也有效以及到底发生了什么吗?

f_1 = f[ f[:,0]==1 ]

最佳答案

对于仅询问一个索引的二维数组,返回与该索引对应的行(包含所有列),因此:

np.all( a[0] == a[0,:] )
#True

当你执行a[0]==1时,你会得到一个 bool 数组,例如:

b = a[0]==1
#array([True, True, False, False, True], dtype=bool)

您可以通过花式索引来使用它来获取其索引在 b 中具有相应 True 值的所有行。在此示例中,执行以下操作:

c = a[ b ]

将获取与索引[0,1,4]相对应的行。通过直接传递这些索引可以获得相同的结果,例如c = a[ [0,1,4] ]

关于python - 带条件的数组过滤,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16982818/

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