windows下安裝
pip install numpy
官方文檔:https://docs.scipy.org/doc/numpy/user/quickstart.html
引入
import numpy as np
1.創(chuàng)建
# 一維數(shù)組
dat=[6,7,8,0,1]
arr1=np.array(dat)
print(arr1)
# 多維數(shù)組
dat2=[[1,2,3,4],[5,6,7,8]]
arr2=np.array(dat2)
print(arr2)

image.png
# dtype 數(shù)據(jù)類型
arr2.dtype
# shape 屬性
arr2.shape
# 創(chuàng)建時(shí)可以指定數(shù)據(jù)類型
arr3=np.array(dat2,dtype=np.int64)
print(arr3)
print(arr3.dtype)
dat3=[6,7.5,9,0,1]
arr4=np.array(dat3)
print(arr4)
print(arr4.dtype)
# astype 類型轉(zhuǎn)換
arr4.astype(np.int64)
# ones 生成全1的數(shù)組
np.ones(10)
# zeros
np.zeros(10)
# 二維
np.zeros((3,6))

image.png
2.運(yùn)算
# 數(shù)組和標(biāo)量之間的運(yùn)算
nd=np.array([1,2,3,4])
print(nd)
print(nd*2) # 乘法1
print(nd*nd) # 自己*自己
print(nd+nd) # 相加
print(1/nd) # 倒數(shù)

image.png
3.索引和切片
# 基本的索引和切片
# arange:range函數(shù)的數(shù)組版
np.arange(10)
nd1=np.arange(1,20,2) # 起點(diǎn)1 最大值20 步長2
print(nd1)
# 切片
print(nd1[5])
print(nd1[2:5]) # 索引未2,3,4 不包括5
# 索引賦值
nd1[2:5]=10 # 這部分元素都被賦值為10
print(nd1)
nd1[2:5]=[2,3,4] # 3個(gè)元素分別賦值 這里3個(gè)元素 如果單個(gè)賦值 不可以只有2個(gè)
print(nd1)
dat3=[[1,2,3,4,5],[2,3,4,5,6]]
nd2=np.array(dat3)
print(nd2)
nd2[0]=1 # 二維數(shù)組的第一個(gè)數(shù)組中的元素全部賦值為1
print(nd2)
print(nd2[0,3]) # 第一行第四列的焦點(diǎn)

image.png
4.花式索引
# 花式索引
nd=np.arange(32)
print(nd)
# reshape
nd1=np.reshape(nd,(8,4)) # 把數(shù)組變成8行4列的數(shù)組的二維數(shù)組
print(nd1)
print(nd1[[1,2,3]]) # 花式取多個(gè)索引 分別取索引未1,2,3的行
# 選取多行 多列交叉處的元素
print(nd1[[1,5,7,2],[0,3,1,2]]) # 取1,0 5,3 7,1 2,2這幾個(gè)元素
# 獲取矩形區(qū)域:方法1
print(nd1[[1,5]][:,[1,2]]) # 取行索引為1和5 列索引為1和2的 的交叉點(diǎn)集合
# 獲取矩形區(qū)域:方法2 np.ix_
print(nd1[np.ix_([1,5,7,2],[0,3,1,2])]) # 取行索引為1 5 7 2 列索引為 0 3 1 2的交叉點(diǎn)集合

image.png
5.通用函數(shù)ufunc
# 通用函數(shù)ufunc
arr=np.arange(10)
print(arr)
# 開根號(hào)
print(np.sqrt(arr)) # 針對(duì)每個(gè)元素開根號(hào)
# 相加
b=np.arange(3)
c=np.array([2,-1,4])
print(b)
print(c)
print(np.add(b,c)) # 各自相同索引的元素相加
# 求最大值
print(np.maximum(b,c)) # 取各自相同索引下的最大的元素 形成新的數(shù)組

image.png
5.常用數(shù)學(xué)和統(tǒng)計(jì)方法
# 常用數(shù)學(xué)和統(tǒng)計(jì)方法
# 一維數(shù)組
arr=np.random.randn(9) # 隨機(jī)生成9個(gè)元素的數(shù)組
print(arr)
# 最小值
print(arr.min())
#最大值
print(arr.max())
# 平均值
print(arr.mean())
# 求和
print(arr.sum())
# 排序
arr.sort()
print(arr)
# 二維數(shù)組
arr1=np.random.randn(5,3)
print(arr1)
# 最小值
print(arr1.min()) # 所有行列中的最小值
# 最大值
print(arr1.max()) # 所有行列中的最大值
# 平均值
print(arr1.mean()) # 所有的平均值
# 排序
arr1.sort() # 每行各自進(jìn)行排序
print(arr1)
# 按列排序
arr1.sort(axis=0) # 每行各自進(jìn)行排序
print(arr1)
# 等分端點(diǎn)
print(np.linspace(0,10,2)) # 0-10中 2代表分為兩個(gè)端點(diǎn)
print(np.linspace(0,10,5)) # 0-10中 5代表5個(gè)端點(diǎn) 把他分為4等分
print(np.linspace(0,10,11)) # 0-10之間 中間差值一樣的11個(gè)數(shù) 包行 0 和10

image.png

image.png
6.線性代數(shù)
# 線性代數(shù)
x=np.array([[1,2,3],[4,5,6]])
print(x)
y=np.array([[6,23],[-1,7],[8,9]])
print(y)
# 乘法 線性代數(shù)特點(diǎn):x行數(shù)必須等于y列數(shù)
print(x.dot(y)) #用x去左乘y
from numpy.linalg import inv
m=np.array([[4,2],[3,1]])
print(m)
# 逆矩陣
print(inv(m))

image.png
7.隨機(jī)數(shù)生成
# 隨機(jī)數(shù)生成
from numpy import random
#normal
rArray=random.normal(size=(4,4)) #normal 隨機(jī)生成矩陣,服從正太分布
print(rArray)
#randit 產(chǎn)生給定上下限范圍內(nèi)的隨機(jī)選取整數(shù)
print(random.randint(0,2))
i=0
while i<20:
print(random.randint(0,2),end= ' ')
i=i+1

image.png