文章目錄
一、Numpy簡介
- Numpy是Python語言的一個library numpy
- Numpy主要支持矩陣操作和運算
- 現在比較流行的機器學習框架(例如Tensorflow/PyTorch等等),語法都與Numpy比較接近
二、numpy創建數組
1.dtype定義格式
import numpy as np
a=np.array([2,3,4],dtype=np.int64)
print(a.dtype)
>>>
int64
2.定義矩陣
- array函數
a=np.array([2,3,4],
[2,3,4])
- zero函數
a=np.zero((3,4)) #三行四列零矩陣
- ones函數
a=np.ones() #所有元素都是1的矩陣
- arange函數
a=np.arange(10,20,2) #以10起始,到20終止(不包括20),以2爲步長的數組
>>>
[10 12 14 16 18]
- reshape函數
a=np.arange(12).reshape((3,4)) #一行十二列,重置格式爲三行四列
- linspace函數:
linspace(start, stop, num=50, endpoint=True, retstep=False, dtype=None)
作用爲:在指定的大間隔內,返回固定間隔的數據。他將返回“num”個等間距的樣本,在區間[start, stop]中。其中,區間的結束端點可以被排除在外。
a=np.linspace(1,10,4)
>>>
[ 1. 4. 7. 10.]
三、numpy屬性
1.創建一個數組
import numpy as np
array=np.array([[1,2,3],[2,3,4]])
print(array)
>>>
[[1 2 3]
[2 3 4]]
2.查看數組維度
ndim返回的是數組的維度,返回的只有一個數,該數即表示數組的維度。
print('number of dim:',array.ndim)
>>>
number of dim: 2
3.查看數組類型
print('shape:',array.shape)
>>>
shape: (2, 3)
4.查看數組元素個數
print('size:',array.size)
>>>
size: 6
四、numpy基礎運算
1.數組的加減冪乘
1.1 加減冪
- 加減
import numpy as np
a=np.array([10,20,30,40])
b=np.arange(4)
print(a)
print(b)
c = a + b
d= a-b
# c = b ** 2 # b的平方
print(c)
print(d)
對應位置相加減
[10 20 30 40]
[0 1 2 3]
[10 21 32 43]
[10 19 28 37]
- 冪和三角函數
e=b**2 #b數組的每一個元素求平方
f=10*np.sin(a) #a數組每一個元素的sin函數
>>>
[0 1 4 9]
[-5.44021111 9.12945251 -9.88031624 7.4511316 ]
1.2 乘法
- 對應想乘:
c=a*b
print(c)
>>>
[ 0 20 60 120]
- 矩陣的乘法:兩種表達方式結果一樣
(1)c_dot=np.dot(a,b)
a=np.array([[2,4],[2,4]])
print(a)
b=np.array([[2,2],[2,2]])
c_dot=np.dot(a,b)
print(c_dot)
>>>
[[2 4]
[2 4]]
[[12 12]
[12 12]]
(2)c_dot=a.dot(b)
c_dot=a.dot(b)
print(c)
>>>
[[12 12]
[12 12]]
2.統計數學運算
a=np.array([[2,4],[2,4]])
np.sum(a) #所有數字的和
np.min(a) #找到最小值
np.max(a) #找到最大值
np.mean(a,axis=0)#對於列進行計算平均值
>>>
12
2
4
[2. 4.]
a=np.array([[4,2],[3,4]])
print(np.median(a,axis=0)) #對於列取中位數
>>>
[3.5 3. ]
- 按行、列求和
a=np.array([[2,4],[2,4]])
np.sum(a,axis=1)#行求和,axis=0是列
>>>
[6 6]
3.其他基礎運算
3.1 arg***函數
numpy.argmin(a,axis=None,out=None)[source]
給出axis方向最小值的下標
- 參數:
a
:Input array.
axis
:默認將輸入數組展平。否則,按照axis方向
out
:可選 - 返回值
index_array:下標組成的數組。shape與輸入數組a去掉axis的維度相同。
注:多個最小值,只顯示第一個
試驗:
import numpy as np
a=np.array([[4,2],
[0,4]])
print(np.argmin(a)) #對於列進行計算平均值
>>>
2
鋪平之後‘0’所在位置就是2
除了argmin還有argmax/argmean/argmedian
3.2 cumsum函數
- 定義:
cumsum(a, axis=None, dtype=None, out=None)
a.cumsum(axis=None, dtype=None, out=None)
- 返回:沿着指定軸的元素累加和所組成的數組,若不指定方向,返回一維數組
- 參數:
a
:數組axis:軸索引,整型,若a爲n維數組,則axis的取值範圍爲[0,n-1]
dtype
:返回結果的數據類型,若不指定,則默認與a一致。
out
:數據類型爲數組。用來放置結果的替代輸出數組,它必須具有與輸出結果具有相同的形狀和緩衝長度代碼示例:
試驗
import numpy as np
arr=np.array([[1,2,3],[4,5,6],[7,8,9]])
#沿着axis=0軸計算
result1=arr.cumsum(0)
print(result1)
>>>
[[ 1 2 3]
[ 5 7 9]
[12 15 18]]
3.3 diff函數
- 定義
numpy.diff(a, n=1,axis=-1)
沿着指定軸計算第N維的離散差值 ,就是n位元素
和n+1位元素
的差
- 參數:
a
:輸入矩陣
n
:可選,代表要執行幾次差值,默認一次
axis
:默認是最後一個
試驗
import numpy as np
a= np.arange(0,12).reshape((3,4))
result=np.diff(a)
print(result)
>>>
[[1 1 1]
[1 1 1]
[1 1 1]]
3.4 nonzero函數
返回的是數組中,非零元素的位置
。如果是二維數組就是描述非零元素在幾行幾列,三維數組則是描述非零元素在第幾組中的第幾行第幾列。
試驗
import numpy as np
a = np.array([[1, 2, 3], [4, 5, 0], [6, 0, 7]])
result=np.nonzero(a)
print(result)
>>>
(array([0, 0, 0, 1, 1, 2, 2], dtype=int64), array([0, 1, 2, 0, 1, 0, 2], dtype=int64))
第一個array描述行,第二個array描述列,我們把結果轉變下以便理解:
array([0, 0, 0, 1, 1, 2, 2]
array([0, 1, 2, 0, 1, 0, 2]
非零元素位置:(0,0)(0,1)(0,2)…
3.5 轉置:T、transpose函數
import numpy as np
a = np.array([[1, 2, 3], [4, 5, 0], [6, 0, 7]])
result1=a.T
result2=np.transpose(a)
print(result1)
print(result2)
>>>
[[1 4 6]
[2 5 0]
[3 0 7]]
[[1 4 6]
[2 5 0]
[3 0 7]]
3.6 sort函數
numpy.sort() 函數返回輸入數組的排序副本。
- 格式
numpy.sort(a, axis, kind, order)
- 參數
a
: 要排序的數組
axis
: 沿着它排序數組的軸,如果沒有數組會被展開,沿着最後的軸排序,axis
=0 按列排序,axis=1 按行排序
kind
: 默認爲’quicksort’(快速排序)
order
: 如果數組包含字段,則是要排序的字段
試驗
import numpy as np
a = np.array([[8, 2, 3], [4, 5, 2], [6, 9, 7]])
print (np.sort(a))
print (np.sort(a,axis=0))
>>>
[[2 3 8]
[2 4 5]
[6 7 9]]
[[4 2 2]
[6 5 3]
[8 9 7]]