Numpy

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
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容