Numpy中有两个常用数据类型,数组(array/ndarray)、矩阵(matrix)
总的来说,matrix是array的特殊形式,matrix只能表示2维的数据,而array可以表示任意维度数据,matrix相当于二维数组。当matrix的某一维的维度为1时,即可称为向量(m,1)是列向量,(1,n是行向量)
本文主要区别二维数组与矩阵、一维数组与向量
数组创建
已有其他格式数据转换:使用np.array函数创建
各种方法生成,如np.random、np.ones等
向量、矩阵创建
已有其他一维、二维格式数据转换:使用np.mat函数创建
注意:数组的一维shape为(m)或者(m,)
列向量的shape为(m,1)
一维数组的打印为单方括号,向量的打印为双方括号
import numpy as np
ay = np.random.randn(5)
print(ay.shape)
mt = np.matrix(ay)
print(mt.shape)
主要区别:
矩阵与数据的区别主要在于部分操作上,由于二维数组相较于其他维数组更常用,因此对二维数组也就是矩阵做了一些操作优化,主要体现在矩阵乘法运算上
1)数组的*运算符表示元素对应相加,矩阵的*运算符表示矩阵乘法,可以对数组采用np.dot实现矩阵乘法
import numpy as np
ay= np.ones((3,3))
print(ay*ay)
print(ay+ay)
print(np.dot(ay,ay))
mt = np.matrix(ay)
print(mt*mt)
print(mt+mt)
import numpy as np
ay1 = np.ones((3,3))
ay2 = np.arange(3)
mt1 = np.matrix(ay1)
mt2 = np.matrix(ay2)
print(ay1+ay2)
print(ay1*ay2)
print(mt1+mt2)
# print(mt1*mt2)
print(mt2*mt1)
总的来说,数组的使用更常见,除非对矩阵运算有要求。