numpy的数组、向量与矩阵

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)
  1. 数组的运算采用广播,当某一维度为1时,可以自行扩展。数组的乘法与矩阵的乘法不同

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)

总的来说,数组的使用更常见,除非对矩阵运算有要求。

你可能感兴趣的:(pythonTrick)