【发布时间】:2015-01-15 22:52:15
【问题描述】:
我有一个数组 (dtype=object),第一列包含数组元组,第二列包含标量。我想要第二列中的所有标量,其中第一列中的元组等于某个元组。
说
>>> X
array([[(array([ 21.]), array([ 13.])), 0.29452519286647716],
[(array([ 25.]), array([ 9.])), 0.9106600600510809],
[(array([ 25.]), array([ 13.])), 0.8137344043493814],
[(array([ 25.]), array([ 14.])), 0.8143093864975313],
[(array([ 25.]), array([ 15.])), 0.6004337591112664],
[(array([ 25.]), array([ 16.])), 0.6239450452872853],
[(array([ 21.]), array([ 13.])), 0.32082105959687424]], dtype=object)
我想要第一列等于 X[0,0] 的所有行。
ar = X[0,0]
>>> ar
(array([ 21.]), array([ 13.]))
我检查X[:,0]==ar 应该找到我那些行。然后我会通过X[X[:,0]==ar,1] 检索我的最终结果。
然而,似乎发生的事情是ar 被解释为二维数组,ar 中的每个元素都与X[:,0] 中的元组进行比较。在这种情况下,这会产生一个 2x7 数组,所有条目都等于False。相比之下,X[0,0]==ar 的比较就像我希望它给出 True 的值一样工作。
为什么会发生这种情况,我该如何解决它以获得所需的结果?
【问题讨论】: