Я хочу, чтобы все массивы NumPlay были двухмерными - PullRequest
0 голосов
/ 22 февраля 2019

Я приехал из Matlab, и хотя все было в основном хорошо перенесено (за это нужно поблагодарить сообщество, лицензия Matlab стоит более 1000 долларов).Есть одна вещь, которую я не могу на всю жизнь выяснить.

В Matlab все массивы являются 2D (до недавнего времени, где они давали вам другие варианты).Так что, когда я определяю скаляр, массив, матрицу, все они рассматриваются как 2D.Это очень полезно при умножении матриц!

В Python, когда используется numpy.К сожалению, я чувствую, что мне приходится использовать команду reshape довольно часто.

В любом случае я могу глобально установить, что все массивы имеют 2D-размеры, если не указано иное?

Изменить: Согласно numy документации numpy.matrix может быть удалено в ближайшем будущем.По сути, я хочу, чтобы у всех выходных данных любой операции numpy к ним автоматически применялась функция np.atleast_2d .

Ответы [ 2 ]

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

Как отмечалось выше, класс np.matrix имеет семантику, очень похожую на массив matlab.

Однако, если ваша цель - изучить numpy как рыночный навык, я настоятельно рекомендую вам полностью принять концепциюndarray;Хотя есть некоторая историческая правда в том, что называть numpy портом matlab, это немного оскорбительно, поскольку ndarray является одним из наиболее убедительных объективных концептуальных улучшений numpy по сравнению с matlab, помимо его цены.

TLDR;вам будет трудно не бросить ваше приложение, если вы заявите, что знаете numpy, но ваши примеры кода пахнут как портированный matlab.

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

Вы можете использовать np.matrix вместо np.array для определения 2D матриц.Например:

np.matrix('1 2; 3 4')
np.matrix([[1, 2], [3, 4]])

Чтобы преобразовать массив в матрицу, используйте np.asmatrix :

a = np.array([[1, 2], [3, 4]])
m = np.asmatrix(a)

Но, как упомянуто в комментариях hpaulj:

Больше не рекомендуется использовать этот класс, даже для линейной алгебры.Вместо этого используйте обычные массивы.Класс может быть удален в будущем.

Так что это хорошая идея - привыкнуть к использованию массивов numpy.Посмотрите этот урок https://docs.scipy.org/doc/numpy/user/numpy-for-matlab-users.html

Для преобразования скаляров или одномерных массивов в двумерные массивы есть функция np.atleast_2d

np.atleast_2d(3.0)
array([[ 3.]])

np.atleast_2d([1, 2, 3])
array([[1, 2, 3]])
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...