Использование np.where в Cython в качестве индекса - PullRequest
0 голосов
/ 26 февраля 2020

Я пытаюсь использовать np.where в программе Cython, чтобы выбрать, где значения находятся в радиусе. Обычно это работает с numpy, но с Cython я получаю

TypeError: объект 'tuple' не может быть интерпретирован как целое число

def test(double[:,::1] array, double[:] point, double radius):
    array = np.asarray(array)
    idx = np.where(np.logical_and(np.greater_equal(array[:, 0], point[0] - radius), np.less_equal(array[:, 0], point[0] + radius)))
    a = array[idx]

Я пытался сделать это, но получил ошибку

только скалярные массивы могут быть преобразованы в скалярный индекс

a = array[idx[0].astype(int)]

1 Ответ

0 голосов
/ 27 февраля 2020

Странно это сработало, хотя я уже сделал np.asarray

a = np.array(array)[idx[0]]
...