#點乘
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基本操作
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.