建立數組:python
import numpy as np
np.array([1,2,3,4],dtype=int64)
複製代碼
改變數組維度:數組
np.arange(15).reshape(3,5)
複製代碼
建立矩陣:bash
import numpy as np
np.full(shape=(3,5),full_value=10)
複製代碼
創建一個3行5列,而且值全爲10的矩陣;dom
做用:按照給定的個數,本身計算步長,生成最終的數組。性能
np.linspace(0,20,10)
# 三個參數: 第一二個參數是起始點和終點,第三個參數是要生成的個數
複製代碼
運行結果: 大數據
生成隨機數:spa
np.random.randint(0,10,10)
#建立一個包含10個數的隨機數組
複製代碼
注意:它是取不到10的,由於是左閉右開的。設計
生成隨機矩陣:3d
np.random.randint(4,8,size=(3,5))
複製代碼
若是想要解決每次生成的隨機數不同的問題,能夠採用seed
,這樣每次生成的隨機數就會同樣了。code
栗子:
np.random.seed(666)
# 以666爲種子生成隨機數
random.random()
#生成默認是在0,1之間的隨機數
複製代碼
若是要生成符合正態分佈的隨機數:
np.random.normal(10,100)
#生成均值爲10,方差爲100的隨機矩陣
複製代碼
訪問方式:
X[2,2]
#能夠訪問,可是不建議採用X[2][2]這種方式,而是採用下面的切片方式
複製代碼
切片方式:
x = np.arange(15).reshape(3,5)
x[:2]
# 返回前兩行生成的數組。
複製代碼
運行結果:
x[2:]
#返回第二行到最後一行的數組
x[:2,:3]
#前兩行,前三列,返回一個2X3的數組
X[:2][:3]
#將只返回前兩行
X[::-1,::-1]
#從最後一行訪問,從最後一列進行訪問
X[:,0]
# 只取一列
複製代碼
注意:切片是原始數組的視圖,視圖上任何操做都會印象原始數據這樣設計的目的是處理大數據,若是Numpy堅持要將數據複製來複制去會產生何等的性能和內存問題。
若是想要一份副本,而不是視圖,採用copy
:
subX = x[:2,:3].copy()
複製代碼
此時對切片數組進行的任何操做將不會影響原來的數組。
做用:修改數組維度
栗子:
x.reshape(-1,10)
# 只想獲得10列,幾行不關注
複製代碼
注意:reshape新生成數組和原數組公用一個內存,無論改變哪一個都會互相影響
x = np.array([1,2,3])
y= np.array([3,2,1])
np.concatenate([x,y])
#結果:array([1,2,3,3,2,1])
複製代碼
多維呢?
A = np.array([1,2,3],[4,5,6])
np.concatenate([A,A])
複製代碼
結果:
若是想要改變拼接方式,用axis
:
np.concatenate([A,A],axis = 1)
複製代碼
注意:
concatenate
只能拼接相同維度的矩陣。若是想要拼接,能夠採用reshape將低維變成高維,而後再進行操做。
固然,若是不想轉換,也能夠用vstack
和hstack
。這兩個方法內部封裝了轉換。
vstack
: 垂直方向堆疊hstack
:水平方向堆疊反手就是一個栗子:
再來一個栗子:
固然,除了能夠水平切,也能夠豎直切,仍是傳入參數axis
。 這裏就不舉例了。
however,Numpy大哥擔憂用起來仍是太複雜,又又又封裝了兩個方法,一個是vsplit
,一個hsplit
。
vsplit
舉例:
hsplit
舉例:
相乘:
轉置:
堆疊:
矩陣的逆:
僞逆矩陣:
np.sum(L)
# 其實python也提供了sum操做,然而使用Numpy效率更高,差距是100多倍,徹底不是一個級別的!!
複製代碼
求最小值和最大值:
np.min(big_array)
np.max(big_array)
複製代碼
對於二維矩陣的聚合運算:
若是想求出每行的和或者每列的和呢?答案仍是axis
:
axis= 0
表示沿着行的方向進行計算,也就是說進行列的相加操做。比較繞~~~
對矩陣中的元素相乘,用prod()
:
若是是對裏面的元素進行+1後再相乘呢?
同理還有:
np.mean(x)
#求平均數
np.median(x)
#求中值
np.percenttile(array,q=25)
#求在數組中大於25%的百分位點的比例;
np.var(array)
#方差
np.std(array)
#標準差
複製代碼
求最小值的索引:
np.argmin(x)
複製代碼
對數組進行排序:
np.sort()
#不改變元數組
x.sort()
#改變原數組
np.argsort(x)
#返回排序後的索引數組
np.partition(x,3)
#快速排序,按照比3小的和比3大的分紅兩邊,記住,不是有序的
#np.argpartition(x,3)
#快速排序的索引數組
複製代碼
x<3
#將x數組中的全部元素和3比較,而後返回[True,False...]的數組
2*x == 24 -4 * x
#將x數組中的全部元素帶入公式,而後返回[True,False...]的數組(知足返回True)
np.sum(x<=3)
np.count_nonzero(x<=3)
np.any(x=0)
#x中任何一個元素等於0,返回True
np.all(x>0)
#x中全部元素大於0,返回True
np.sum(x % 2 == 0)
#知足這個公式的數值的和
np.sum((x>3) & (x < 10))
#注意用的是'&'
np.sum(-(x==0)
# '-'是非運算符
複製代碼