Python numba: как вырезать столбец из массива numpy?

Я понимаю, что numba поддерживает ряд функций numpy в режиме nopython: http://numba.pydata.org/numba-doc/dev/reference/numpysupported.html

Однако есть ли способ вырезать столбец или строку из массива numpy в режиме nopython?

Что-то вроде

x= y[:,mycol]
x=y[myrow,:]

не работает в режиме nopython. Единственный обходной путь, который я нашел, - это разрезать массив вне numba и передать «срезы» моей функции numba, но это не всегда возможно или просто.

Спасибо!


person Pythonista anonymous    schedule 05.07.2016    source источник


Ответы (1)


Какую версию Numba вы используете? С 0.26.0 работает следующее:

import numpy as np
import numba as nb

@nb.jit(nopython=True)
def func(x, mycol):
    y = x[:,mycol]

    return y

x = np.arange(100).reshape((10,10))
mycol = 2
y = func(x, mycol)

print np.allclose(x[:,mycol], y)  # True
person JoshAdel    schedule 05.07.2016
comment
Я использую 0.20.0. Я не хочу обновляться сейчас, так как не могу рисковать обнаружить некоторую несовместимость с предыдущими версиями, как это было в прошлом. Я обновлюсь, как только у меня будет время. Спасибо! - person Pythonista anonymous; 05.07.2016
comment
PS Я полагаю, вы не знаете, как это сделать с версией 0.20, верно? - person Pythonista anonymous; 05.07.2016
comment
Я только что протестировал тот же код с 0.20, и он работает на моей машине - person JoshAdel; 05.07.2016