Найти индекс всех элементов numpy массивов - PullRequest
0 голосов
/ 18 февраля 2019

Я использую функцию numpy searchsort(), чтобы найти индекс массива numpy.Это работает только для некоторых массивов.Что не так (реализация ниже)?

import numpy as np

#specify the dtype in RV
RV = np.array([
  np.array([0.23, 2.5, 5.0, 7.1]),
  np.array(['a1', 'a2']),
  np.array(['b2', 'b1'])
], dtype=object) 
print(RV)
def Rules():
    global r  
    r = np.array(np.meshgrid(*RV), dtype=object).T.reshape(-1,len(RV))
    return r
Rules()
print(r)

print(RV[0].searchsorted(r[:,0])) #working
print(RV[1].searchsorted(r[:,1])) #working
print(RV[2].searchsorted(r[:,2])) #not working 

1 Ответ

0 голосов
/ 19 февраля 2019

По умолчанию аргумент array searchsorted() должен быть отсортированным .Поэтому решение:

Используйте numpy.sort() для предварительной сортировки:

np.sort(RV[2]).searchsorted(r[:,2])

Или используйте аргумент sorter:

RV[2].searchsorted(r[:,2],sorter=np.argsort(RV[2]))
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...