#点乘 import numpy as np a = np.arange(12).reshape(3,4) #0-11,#一共12个数,分成了三行四列的二维矩阵 b = np.arange(10,14,1).reshape(4,1) #10-13,以1为间隔分成4行一列的二维矩阵 print(a.dot(b)) #点乘,就是数学中的矩阵乘法,前行乘以后列 print(np.exp(a)) #矩阵所有的值取e的多少次幂 print(np.sqrt(a)) #a的所有的数取均方 c = a.ravel() print(c) #[ 0 1 2 3 4 5 6 7 8 9 10 11] 把矩阵拉成了向量 print(a.shape) #(3, 4) 如果shape后面没括号就是查看矩阵行和列 c.shape = (6,2) #把拉长的c向量重新变成6×2的矩阵 #[ 0 1 2 3 4 5 6 7 8 9 10 11]一维数组,它们都带一对方括号的,所以shape只显示一个数,对于这种仅含一对方括号的数组而言, #不可以做转置,那怎么办 #第一种方法 d = np.array([[1,2,3]]) print(np.shape(d)) (1, 3) print(np.shape(c)) #(12,) print(d.T) 列向量转置成行向量 [[1] [2] [3]] #第二种方法 列向量转置成行向量 c.shape = (-1,1) #-1的意思是,如果要reshape成一列多行,你又不想去计算有多少个元素时,numpy会自动的根据数据和列数给你填充 print(c) print(c.T) np.hstack() #横着拼接,增加属性值 np.vstack() #竖着拼接,增加样本 a = np.floor(10 * np.random.random((2,12))) print(a) print("------------------") print(np.hsplit(a,3)) #平均切三份,横着切,按照行切 print(np.hsplit(a,(3,4))) #在第四个索引那里切,然后在第五个索引那里切 print(np.vsplit(a,3)) #-----------------------------复制操作-----------------------------------------------# c = a.view() #复制操作,浅复制,有不同的内存地址,但是共用相同的值; c = a 这个就相当于cpp的指针了,或者叫做引用;a指向的这个值的引用计数一开始是1,后来被c引用了加1 d = a.copy() 深拷贝。引用和数据都是不同,递归的赋值a中的值。 #----------------------------排序或者索引的应用----------------------------------------# #找矩阵每列的最大值 index = data.argmax(axis=0) data[index, range(np.shape[1])] np.tile(a,(1,2)) #行变成1倍,列变成2倍 #-------------------排序------------------------------- a = np.array([[1,2,3],[7,8,9]]) print(np.sort(a,axis=1)) #按行排序 e = np.argsort(a) #输出的是索引
numpy基本操作
猜你喜欢
转载自blog.csdn.net/gaoyishu91/article/details/80177983
今日推荐
周排行