list 、numpy.array、mat的区别
- 首先是元素存储的区别,list里面可以存储不同的元素类型,但是array和mat必须是同一类型的元素,arrayA与mat自动将不同类型的元素进行转换成同一类型的元素。
- 然后是展现的形式,array是数组类型,而mat是矩阵的形式
import numpy as np
listA = [1,2,'3']
matA = np.mat(listA)
arrayA = np.array(listA)
print(matA,end = ' ,this is matA')
print()
print(arrayA,end = ' ,this is arrayA')
>> [['1' '2' '3']] ,this is matA
>> ['1' '2' '3'] ,this is arrayA
- array一直是作为一个数组形式的存在,所以引用出来也是数组中的元素
- mat 引用也是作为矩阵的形式
import numpy as np
listA = [1,2,3,4]
listB = [[1,2],[3,4]]
matA = np.mat(listA)
arrayA = np.array(listA)
matB = np.mat(listB)
arrayB = np.array(listB)
print(matB,end=' ,this is matB')
print()
print(matB[1],end=' ,part of matB')
print()
print(arrayB[1],end=' ,part of arrayB')
>> [[1 2]
[3 4]] ,this is matB
[[3 4]] ,part of matB
[3 4] ,part of arrayB
- 加法
list可以看成一个整体进行运算,例如加法可以看成’链接’运算
listA = [1,2,3,4]
listB = [4,3,2,1]
print(listA + listB)
>> [1, 2, 3, 4, 4, 3, 2, 1]
array与mat可以看作对元素的操作
import numpy as np
listA = [1,2,3,4]
listB = [4,3,2,1]
matA = np.mat(listA)
matB = np.mat(listB)
arrayA = np.array(listA)
arrayB = np.array(listB)
print(matA + matB,end=' ,this is matrix addition')
print()
print(arrayA + arrayB,end=' ,this is array addition')
>> [[5 5 5 5]] ,this is matrix addition
[5 5 5 5] ,this is array addition
- 乘法
list的乘法:
- 与单个元素相乘,相当于list的拼接
listA = [1,2,3]
print(listA*3)
>> [1, 2, 3, 1, 2, 3, 1, 2, 3]
- list与list的乘法,error
array的乘法:
import numpy as np
listA = [1,2,3,4]
arrayA = np.array(listA)
print(arrayA*3)
>> [ 3 6 9 12]
mat的乘法:
import numpy as np
listA = [1,2,3,4]
matA = np.mat(listA)
matB = np.transpose(matA)
print(matA*matB)
>> [[30]]