У меня есть массив (dtype = object) с первым столбцом, содержащим кортежи массивов, а второй столбец содержит скаляры. Я хочу, чтобы все скаляры были из второго столбца, где кортежи в первом столбце равны определенному кортежу.сравнить кортеж с кортежами в массиве numpy
Say
>>> 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.]))
Я thaugh проверки X[:,0]==ar
должны найти мне эти строки. Я бы тогда получил свой окончательный результат на X[X[:,0]==ar,1]
.
Что, кажется, происходит, однако, заключается в том, что ar
получает интерпретировать как 2dimensional массив и каждый отдельный элемент в ar
сравниваются с кортежами в X[:,0]
. Это дает в этом случае массив 2x7 всех записей, равных False
. Напротив, сравнение X[0,0]==ar
работает так же, как хотелось бы, давая значение True
.
Почему это происходит и как я могу исправить это, чтобы получить желаемый результат?