Numpy學習之陣列運算隨筆

2021-10-06 07:19:23 字數 4204 閱讀 8956

numpy的學習需要把初中、高中和大學的數學重新學一遍,才能學好

越學越覺得對不起各位數學老師。

import numpy as np

# 一元通用函式

arr = np.arange(10)

arr1 = np.random.randn(8)

*7print

(np.sqrt(arr)

)#np.sqrt() 開平方

print

(np.exp(arr)

)#np.exp() 求e^x e=2.71828182845904523536

print

(np.

abs(arr)

)#abs() 求絕對值 fabs()類似

print

(np.square(arr)

)#square() 計算每個數字的平方

print

(np.log(arr)

)#log,log2,log10,log1p,計算對數

print

(np.sign(arr)

)#sign() 計算每個數字的符號值,正數為1,負數為-1,0為0

print

(np.ceil(arr)

)#ceil() 計算大於等於該數字的最小整數值

print

(np.floor(arr)

)#floor() 計算小於等於該數字的最小整數值

print

(np.rint(arr1)

)#rint() 將元素保留到整數字

print

(np.isnan(arr)

)#isnan() 判斷陣列中是否有nan

print

(np.isfinite(arr)

)#isfinite()陣列是否有限 isinf() 陣列是否無限

print

(np.sin(arr)

)#sin(),cos(),cosh(),sinh(),tan(),tanh()等 哎,都忘了

#二元通用函式

arr1 = np.random.randn(8)

arr2 = np.random.randn(8)

np.maximum(arr1,arr2)

#maximum() 求最大值,兩個引數的ndarry的shape要完全相同

np.add(arr1,arr2)

#add() 兩個陣列相加

np.subtract(arr1,arr2)

#subtract() 陣列1-陣列2

np.multiply(arr1,arr2)

#multiply() 乘法

np.divide(arr1,arr2)

#divide()除法

# np.minimum() np.fmin() 求最小值

# np.mod() 取餘數

# np.copysign() 將第乙個陣列的符號值改為第二個陣列的符號值

# np.greater(),np.greater_equal(),np.less() np.equal(),np.less_equal(),np.not_equal() 比較大小

# np.logical_and(),np.logical_or(),np.logical_not(),np.logical_xor() 與或非異或操作

#modf:返回乙個浮點值陣列的小數部分和整數部分

arr1 = np.random.randn(8)

*7remainder, whole_part = np.modf(arr1)

#remainder:餘數,whole_part:整數

#第一張圖

import matplotlib.pyplot as plt

points = np.arange(-5

,5,0.01

)xs, ys = np.meshgrid(points,points)

z = np.sqrt(xs**

2+ys**2)

plt.figure(

)plt.imshow(z,cmap=plt.cm.gray)

plt.colorbar(

)plt.title(

"image plot of $\sqrt$ for a grid of values"

)plt.show(

)#將條件邏輯作為陣列操作

arr = np.random.randn(4,

4)print

(np.where(arr>0,

2,arr)

)#如果arr的值大於0,則改為2,否則改為-2

# 數學與統計方法

arr1 = np.random.randn(5,

4)print

(arr1.mean())

# mean() 求平均值

print

(arr1.mean(axis=1)

)# 計算每一列的平均值

print

(arr1.mean(axis=0)

)# 計算每一行的平均值

# 其他方法:

# std,var 標準差和方差

# min,max 最小值和最大值

# argmin,argmax 最大值和最小值的位置

# cumsum 從0開始元素累積和

# cumprod 從1開始元素累積積

arr2 = np.array([1

,2,3

,4,5

,6,7

])print

(arr2)

print

(arr2.cumsum())

print

(arr2.cumprod())

print

(np.cumsum(

range

(101))

[-1]

)#求1-100的和

# 布林數值組的方法:

arr = np.random.randn(

100)

print

((arr >0)

.sum()

)#統計陣列中正值的個數

bools = np.array(

[false

,true

,false

,false])

print

(bools.

any())

#檢查陣列中是否有乙個true

print

(bools.

all())

#檢查陣列中是否全部是true

# 排序

arr = np.random.randn(10)

arr.sort(

)#對陣列中的值進行排序,由小到大

arr1 = np.random.randn(5,

3)arr1.sort(axis=1)

#沿著列的方向進行排序 如果=0,就是沿著行的方向進行排序

#集合操作

# unique(x) 計算x的唯一值,並排序

# intersect1d(x,y) 計算x和y的交集,並排序

# union1d(x,y) 計算x和y的並集,並排序

# in1d(x,y) 計算x中的元素是否包含在y中,返回乙個布林值陣列

# setdiff1d(x,y) 差集,在x中但是不在y中的元素

# setxor1d(x,y) 異或集,在x或者y中,但不屬於xy的交集的元素

ints = np.array([1

,2,3

,1,1

,2,3

,4,5

,5,2

])print

(np.unique(ints)

)#隨機漫步:

nsteps =

1000

draws = np.random.randint(0,

2,size=nsteps)

steps = np.where(draws >0,

1,-1

)walk = steps.cumsum(

)print

(steps.mean())

print

(walk.

min())

print

(walk.

max(

))

numpy之陣列運算

陣列之邏輯運算 可以直接對陣列進行邏輯判斷,會返回相應的bool型別陣列 通用判斷函式 三元運算子 陣列之統計運算陣列與數之間的運算 會作用到陣列中的每乙個元素上。陣列與陣列之間的運算 廣播機制 陣列在進行向量化運算時,要求陣列的形狀是相等的。當形狀不相等的陣列執行算術運算的時候,就會出現廣播機制,...

Numpy陣列運算

import numpy as np arr1 np.array 1,2,3 4,5,6 arr2 np.array 1,1,2 2,3,3 print arr1 print arr2 print arr1 arr2 兩個陣列的同位置元素相加 print arr1 arr2 兩個陣列的同位置元素相減...

numpy陣列運算

加 減 乘 除 指數運算 求倒數 取相反數 位運算 等各種運算都是在各個元素上分別進行的 加法 a numpy.array 2,4,5 b numpy.array 1,1,1 a b array 3,5,6 乘法 a b array 2,4,5 倒數 1.a array 0.5 0.25,0.2 相...