Я думаю, что вы тут все путаете, 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 в будущих версиях, потому что он ничего не добавляет действительно полезен, кроме того, что заставляет задуматься разработчиков.