numpy是python的一个扩展,包括数值计算矩阵等。
reshape
顾名思义就是改变形状,在这里是改变数据的形状,也就是数据的结构
np_data = np.arange(6).reshape((2,3))
print(
'\nnp.arange(6)', np.arange(6),
'\nnumpy', np_data,
)
可以看见把一个线性的数据结构改为了二维的数据结构
array
首先要有数组的概念,咱从代码来看
array常规使用
import numpy as np
d=np.array([1,2,3,4])
print("d",d)
print("d[0]",d[0]) #d[0]=1(#表示后面接注释)
print("----------------")
e=np.array([(1,2),(3,4)])
print("e",e)
print("type e[0]", type(e[0])) # e[0]的类型
print("e[0]",e[0]) # e[0]=array([1,2])
print("e[0][0]",e[0][0]) # e[0][0]=1
print("----------------")
# 注意,这里是[],而上面是()
e=np.array([[1,2],[3,4]])
print("e",e)
print("type e[0]", type(e[0]))
print("e[0]",e[0])
print("e[0][0]",e[0][0])
运行结果如下:从结果可以看到[] 和()在这里没有区别
array.T
列*行:2*3
这个是矩阵转置,就是说列变成行,行变成列,2*3也就变成了3*2
import numpy as np
print(np.array([[1,2,3]]))
print(np.array([[1,2,3],[2,2,2]]))
print(np.array([[1,2,3],[2,2,2]]).T)
结果如下,本来是2行*3列的,变成了3行*2列
矩阵的乘法
dot()函数是矩阵乘,而*则表示逐个元素相乘
*乘
*乘表示逐个元素相乘
import numpy as np
a = np.array([[2,2,2],[3,3,3]])
b = np.array([[4,4,4],[5,5,5]])
print("a*b=", a*b)
从结果可以看见,是对应位置的对应元素相乘。也就是说,两个矩阵行列必须相同(通俗的理解就是规格一样)
dot乘
dot()函数是矩阵乘
import numpy as np
a = np.array([[2,2,2],[3,3,3]])
c = np.array([[4,4,4],[5,5,5],[6,6,6],[7,7,7]]).T # T表示转置
print("dot(a,c)=",np.dot(a,c))
这段代码的意思是一个2*3的矩阵 dot乘 3*4的矩阵 变成了2*4的矩阵
也就是说:要保证第一个矩阵的列与第二个矩阵的行规格是一样的(相邻两个数字是一样的)
2*3 dot 3*4 dot 4*5 = 2*5
值是怎么计算得来的呢?
a一行中的每一个元素与b一列中的每一个元素对应相乘,最后再相加
result[0][0] = a[0][0]b[0][0] + a[0][1]*b[1][0] + a[0][2] b[2][0]+……
2*4+2*4+2*4 = 24; 2*5+2*5+2*5 = 30; 2*6+2*6+2*6 = 36; 2*7+2*7+2*7 = 42
3*4+3*4+3*4 = 36; 3*5+3*5+3*5 = 45; 3*6+3*6+3*6 = 54;3*7+3*7+3*7 = 63
————暂时写到这里
—————————————————————————————————————
欢迎关注微信公众号:云端看大地