[python]numpy基礎定理


人工知能の授業を受けたとき、numpyが得意だと思っていましたが...私の問題がうまく解決できずにずっとグーグルゲームをしている様子を見て、いっそこの機会に内容を整理すればいいのです.numpy基礎定理

numpy初期化関数


通常numpyにも同じ機能があり、リストを初期化するときに空の配列を作成したり、0を初期化したりするのと同じです.次にnumpyの例を示します.
import numpy as np
a = np.zeros((2,2)) #괄호 안에는 차원의 수가 들어간다.
print(a)
a = np.ones((2, 3)) #괄호 안에는 차원의 수가 들어간다.
print(a)
a = np.full((4, 3), 5)
print(a)
a = np.array(range(12)).reshape((3,4))
print(a)

numpy slicing


リストのようにスライスを提供します.
import numpy as np

lst = [[1, 2, 3],
       [4, 5, 6],
       [7, 8, 9]
      ]
narray = np.array(lst) #list를 np array로 바꿀 수 있다.
a = narray[0:2, 0:3]
print(a) #0~1행 0~2 열

a = narray[1:, 1:] #1번 행부터, 1번 열부터 끝까지
print(a)
実行結果
[[1 2 3]
 [4 5 6]]
[[5 6]
 [8 9]]

numpy arange


連続した数値を出力するためにnumpyはarangge関数を提供する.
a= np.arange(10, 30, 5)
print(a)
b = np.arange(0, 2, 0.3)
print(b)
実行結果
[10 15 20 25]
[0.  0.3 0.6 0.9 1.2 1.5 1.8]

linspace


numpy arangが浮動小数点パラメータとともに使用される場合、要素に含まれる数値は予測できません.この場合linspaceが使用されます.
from numpy import pi
from matplotlib import pyplot as plt

a = np.linspace(0, 2, 9)
print(a)
x = np.linspace(0, 2*pi, 100)
f = np.sin(x)
print(f)
plt.plot(f)
plt.show()
実行結果

同様に、matplotlibを使用してグラフを描きます.これは次の章で説明します.

Basic Operations


他のマトリクス言語とは異なりnumpyは要素中心の演算を行うことができる.
a = np.array([20, 30, 40, 50])
b = np.arange(4)
print(b)
c = a - b
print(c)
print(b**2)
print(10*np.sin(a))
print(a < 35)
[0 1 2 3] 
[20 29 38 47]
[0 1 4 9]
[ 9.12945251 -9.88031624  7.4511316  -2.62374854]
[ True  True False False]
他の一般的なマトリクス言語とは異なり、numpyマトリクスは乗算演算子で計算でき、ブロードキャスト可能なdot関数もあります.
A = np.array([[1, 1],
             [2, 2]])
B = np.array([[2, 0],
             [3, 4]])
print(A*B) # elementwise product
print(A@B) # matrix product
B = np.array([2, 0])
print(A.dot(B)) # matrix product with broadcasting
実行結果
[[2 0]
 [6 8]]
[[ 5  4]
 [10  8]]
[2 4]
基本的に、これらの演算は配列の形状とは無関係です.
b = np.arange(12).reshape(3, 4) #차원의 수와 range 수가 맞아떨어져야한다.
print(b)
'''[[ 0  1  2  3]
 [ 4  5  6  7]
 [ 8  9 10 11]]'''

print(b.sum(axis=0))
'''
[12 15 18 21]
'''

Universal Functions


オーバーフローはsin、cos、expなど、よく知られている数学関数を提供します.
これらの関数を汎用関数と呼びます.
B = np.arange(3)
print(B)
#[0 1 2]
print(np.exp(B))
#[1.         2.71828183 7.3890561 ]
print(np.sqrt(B))
#[0.         1.         1.41421356]
C = np.array([.2, .3, .5])
print(np.add(B,C))
#[0.2 1.3 2.5]