numpy中数组和矩阵的区别
其他
2018-11-05 12:11:07
阅读次数: 0
- matrix是array的分支,matrix和array在很多时候都是通用的,用哪一个都一样;
- 如果两个可以通用,那就选择array,因为array更灵活,速度更快,很多人把二维的array也翻译成矩阵。
- 相同点:索引方式相同,都可以使用a[i][j],a[i,j]进行索引
- matrix(矩阵):
- 具有相对简单的运算符号,比如两个matrix相乘(求内积),就是用符号*
- array(数组):
- 1.两个一维数组相乘用*,对应元素相乘
-
import numpy as np
a=np.array([1,2,3,4])
b=np.array([2,3,4,5])
print(a*b)
print(sum(a*b))
#结果
[ 2 6 12 20]
40
- 多维数组也可以看成矩阵,如果进行矩阵相乘(求内积),则需要用到np.dot(),如np.dot(arr.T,arr)
- 两者转换:
-
import numpy as np
"""rand函数的作用就是从标准正态分布中返回一个或多个样本值,
这里返回2行3列共6个数的数组。
标准正态分布俗称高斯分布,均值为0,方差为1的正态分布。"""
arr=np.random.rand(2,3)
b=np.dot(arr.T,arr) #把数组当成矩阵,对应元素相乘求内积
#将数组转化成矩阵
arr_Matrix=mat(arr) #等同于arr_Matrix=matrix(arr) ,mat是matrix的缩写
c=arr_Matrix.T * arr_Matrix #矩阵直接相乘
#将结果输出
print("arr:\n{}\ntype(arr):{}".format(arr,type(arr)))
print("数组(矩阵)内积:\n",b)
print("arr_Matrix:\n{}\ntype(arr_Matrix):{}".format(arr_Matrix,type(arr_Matrix)))
print("矩阵乘积:\n",c)
#比较两者乘积是否相等
print("数组矩阵内积=矩阵乘积:\n",b==c)
#运行结果如下:
arr:
[[0.93383594 0.70401786 0.95323492]
[0.7970047 0.21436019 0.24329003]]
type(arr):<class 'numpy.ndarray'>
数组(矩阵)内积:
[[1.50726605 0.82828326 1.08406832]
[0.82828326 0.54159144 0.72324611]
[1.08406832 0.72324611 0.96784685]]
arr_Matrix:
[[0.93383594 0.70401786 0.95323492]
[0.7970047 0.21436019 0.24329003]]
type(arr_Matrix):<class 'numpy.matrixlib.defmatrix.matrix'>
矩阵乘积:
[[1.50726605 0.82828326 1.08406832]
[0.82828326 0.54159144 0.72324611]
[1.08406832 0.72324611 0.96784685]]
数组矩阵内积=矩阵乘积:
[[ True True True]
[ True True True]
[ True True True]]
转载自blog.csdn.net/jiangsujiangjiang/article/details/83714475