Numpy: есть ли разница между ix_ и ogrid? - PullRequest
0 голосов
/ 22 февраля 2020

Название говорит само за себя: есть ли различия между np.ogrid и np.ix_? Например, выходные данные ogrid[0:9.,0:6.] и ix_(r_[0:9.],r_[0:6.]) одинаковы.

Заранее спасибо!

1 Ответ

1 голос
/ 22 февраля 2020

Они не одно и то же, но могут создавать одинаковые массивы.

Один экземпляр класса использует [], другой - функцию. Один создает список, другой - кортеж. Один принимает нотацию срезов напрямую (следствие нотации [], другой требует списки или массивы или вывод объекта np.r_.

In [8]: np.ogrid[0:9.,0:6.]                                                                    
Out[8]: 
[array([[0.],
        [1.],
        [2.],
        [3.],
        [4.],
        [5.],
        [6.],
        [7.],
        [8.]]), array([[0., 1., 2., 3., 4., 5.]])]

In [10]: np.ix_(np.r_[0:9.],np.r_[0:6.])                                                       
Out[10]: 
(array([[0.],
        [1.],
        [2.],
        [3.],
        [4.],
        [5.],
        [6.],
        [7.],
        [8.]]), array([[0., 1., 2., 3., 4., 5.]]))

meshgrid также может создавать список:

In [14]: np.meshgrid(np.arange(9.),np.arange(6.),indexing='ij',sparse=True)                    
Out[14]: 
[array([[0.],
        [1.],
        [2.],
        [3.],
        [4.],
        [5.],
        [6.],
        [7.],
        [8.]]), array([[0., 1., 2., 3., 4., 5.]])]

Вы также можете сделать массивы «напрямую»:

In [15]: (np.arange(9.).reshape(-1,1), np.arange(6.).reshape(1,-1))                            
Out[15]: 
(array([[0.],
        [1.],
        [2.],
        [3.],
        [4.],
        [5.],
        [6.],
        [7.],
        [8.]]), array([[0., 1., 2., 3., 4., 5.]]))

np.arange и np.r_ могут создать тот же массив, хотя r_ предоставляет еще несколько колоколов и свистит.

Вы можете прочитать код самостоятельно по адресу: numpy/lib/index_tricks.py

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...