numpy: размеры против формы - PullRequest
       19

numpy: размеры против формы

1 голос
/ 02 апреля 2020

У меня есть короткий вопрос о атрибутах shape и ndim. Как массив может иметь больше измерений, чем два, но матрицы ограничены формой тревоги? Разве для трехмерного массива не нужно иметь формы с чем-то вроде amxnxo shape?

С уважением

1 Ответ

0 голосов
/ 02 апреля 2020

Я думаю, что вы тут все путаете, np.array может иметь любое количество измерений, а np.matrix только два, np.matrix - это конкретный случай c, где ndim = 2 и имеют специальные матричные операторы. Из NumPy документации np.matrix:

Note:
It is no longer recommended to use this class, even for linear algebra. 
Instead, use regular arrays. The class may be removed in the future.

Returns a matrix from an array-like object, or from a string of data. 
A matrix is a specialized 2-D array that retains its 2-D nature through operations.
It has certain special operators, such as * (matrix multiplication) and ** (matrix power).

Также обратите внимание на этот пример, чтобы вы могли увидеть разницу:

a = np.matrix([[2,2],[2,2]])
print(a**2)

Это вернет:

matrix([[8, 8],
        [8, 8]])

Потому что matrix"a" это квадрат, но если вы сделаете то же самое с массивом:

a = np.array([[2,2],[2,2]])
print(a**2)

Будет возвращено:

array([[4, 4],
       [4, 4]])

Поскольку он применял квадрат во всех элементах, если вам нужно поведение np.matrix, вам нужно будет использовать np.dot

Я думаю, что они, вероятно, удалят np.matrix в будущих версиях, потому что он ничего не добавляет действительно полезен, кроме того, что заставляет задуматься разработчиков.

...