Max Coding blog

Numpy

2021/08/27

參考資料:https://numpy.org/doc/stable/reference/ ## np.array([]) 若要製造一個矩陣,可使用此函式。 ## array.ndim 可查看array是幾維矩陣。 ## array.size 可查看有多少元素在array裡。 ## array.transpose() or array.T 可將矩陣轉置,row變成column,column變成row。

1
2
3
4
5
6
7
8
9
10
11
12
import numpy as np
arr = np.array([[1,2,3],[4,5,6],[7,8,9])
print(arr)
#output
#[[1 2 3]
#[4 5 6]
#[7 8 9]]
print(arr.transpose())
#output
#[[1 4 7]
#[2 5 8]
#[3 6 9]]
## np.ones((i,j)) 可製造一個i*j且內容皆為1的矩陣。 ## np.zeros((i,j)) 可製造一個i*j且內容皆為0的矩陣。 ## dtype dtype可以在許多函式裡當參數,例如在np.array()、np.ones()、np.zeros()裡都可以加入此參數,此參數的功用是使矩陣裡可以使用dtype裡的型態,例如:
1
2
3
4
5
6
import numpy as np
arr = np.array([1,2,3],[4,5,6],[7,8,9],dtype = float)
print(arr)
a = np.zeros((2,3),dtype = int)
print(a)
print(arr.dtype)#output:float64
## np.linspace(-np.pi, np.pi, num=100, endpoint=True) 第一個參數為起始數,第二個參數為終止數,第三個參數為共有幾個點,第四個參數為是否包含np.pi。
1
2
3
4
5
import numpy as np
a = np.linspace(1,10,5,endpoint = True)
b = np.linspace(1,10,5,endpoiont = False)
print(a)
print(b)
## np.arange() np.arange(n)#產生0~n-1的數 np.arange(m,n,step)#產生m到n-1,step代表間隔為多少。 ## np.argmin and np.argmax 找出矩陣裡最小和最大的索引
1
2
3
4
5
6
import numpy as np
arr = np.array([[1,2,3],[4,5,6],[7,8,9]],dtype = float)
min_idx = np.argmin(arr)
max_idx = np.argmax(arr)
print(min_idx)
print(max_idx)
## np.empty() 將一個矩陣做宣告,但沒有初始化。 ## np.median()、np.mean()、np.cumsum() np.median()矩陣中尋找中位數 np.mean()得矩陣的平均 np.cumsum()累加
1
2
3
4
import numpy as np
arr = np.array([[1,2,3],[4,5,6],[7,8,9]])
summ = np.cumsum(arr)
print(summ)#[ 1 3 6 10 15 21 28 36 45]
## np.reshape() 重新塑造矩陣的形式。 ## np.astype() 強制更換型態。 ## np.newaxis 增加一個維度。
1
2
3
import numpy as np
x = np.linspace(-1,1,30)[:,np.newaxis]
print(x)
## array.itemsize & array.nbytes
1
2
3
4
5
import numpy as np

a = np.array([[1,2,3],[4,5,6]])
print(a.itemsize)
print(a.nbytes)
itemsize是指每一個元素的記憶體使用量,而nbytes是array裡所有元素的記憶體使用量。 ## array.flatten() & array.ravel() 將原本多維陣列打平成一維陣列。
1
2
3
4
5
6
7
8
9
10
11
import numpy as np

a = np.array([[1,2,3],[4,5,6]])
b = a.flatten()
print(b)

print('==============')

x = np.array([[1,2,3],[4,5,6]])
y = x.ravel()
print(y)
array.flatten() 和 array.ravel()有個叫order的引數,預設為C,常用的引數值有 C 和 F,C代表C-stytle,是以row為主的展開,而F代表Fortran-style,是以column為主的展開。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
import numpy as np

a = np.array([[1,2,3],[4,5,6]])
b = a.flatten(order = 'C')
print(b)
c = a.flatten(order = 'F')
print(c)

print('==============')

x = np.array([[1,2,3],[4,5,6]])
y = x.ravel(order = 'C')
print(y)
z = x.ravel(order = 'F')
print(z)
## 合併array ### concatenate 將兩個ndarray做合併,要注意,兩個ndarray要有一樣的shape。
1
2
3
4
5
6
import numpy as np

a = np.array([[1,2,3],[4,5,6],[7,8,9]])
b = np.array([[10,11,12],[13,14,15],[16,17,18]])

print(np.concatenate((a,b)))
## where numpy.where(condition[, x, y])
1
2
3
4
5
import numpy as np

a = np.random.randint(-50,50,50)
print(a)
print(np.where(a > 0,'T','F'))
## 四則運算 np.add():相加 np.substract():相減 np.multiply():相乘 np.divide():相除 np.mod():取餘數
1
2
3
4
5
6
7
8
import numpy as np
a = np.array([1,2,3,4,5])
b = np.array([5,10,15,20,25])
print(np.add(a,b))
print(np.subtract(a, b))
print(np.multiply(a,b))
print(np.divide(a,b))
print(np.mod(a,b))
## 數據分析
1
2
3
4
5
6
7
8
9
import numpy as np
math = np.array([80,50,68,74,88])
print('Math:')
print('平均:',np.nanmean(math))
print('最高分:',np.nanmax(math))
print('最低分:',np.nanmin(math))
print('標準差:',np.nanstd(math))
print('變異數:',np.nanvar(math))
print('相關係數:',np.corrcoef(math))
## dot() && @ 運算內積的方式。
1
2
3
4
5
6
7
import numpy as np

ham = np.array([1,2,3])
egg = np.array([4,5,6])

print(np.dot(ham, egg))# output : 32
print(ham @ egg)# output : 32
## np.exp 自然指數函數 如果有在做ML的話,可能會運用到softmax,其中原理就是將所有輸入的資料進入一個轉換,然後相加等於1,那我們會用到exp做轉換,雖然整體轉換過程不是只用到exp,但是exp是一個非常重要的過程。 exp在數學中就是自然指數函數,用法如下:
1
2
3
4
5
6
7
8
9
10
import numpy as np

a = 2.7
b = 1.3
c = -4

arr = np.array([a,b,c])

result = np.exp(arr)
print(result)

by 中和高中 吳振榮
CATALOG
  1. 1. by 中和高中 吳振榮