21.07.22オーバーフローベース(3)



毛を剃って可愛くなった豆順です.
次に前回の基礎を整理しましょう

三項式のベクトル化バージョン


条件a,b:条件a,またはbを満たす


where関数の使用

np.random.seed(0)
ar = np.random.randn(4,4) 
print(ar) 

#결과 
[[-0.40317695  1.22244507  0.20827498  0.97663904]
 [ 0.3563664   0.70657317  0.01050002  1.78587049]
 [ 0.12691209  0.40198936  1.8831507  -1.34775906]
 [-1.270485    0.96939671 -1.17312341  1.94362119]]



##ar의 값이 0보다 크면 2라는 값을 넣고, 0보다 작으면 -2라는 값을 넣으세요
np.where(ar > 0, 2, -2) 

#결과 
array([[-2,  2,  2,  2],
       [ 2,  2,  2,  2],
       [ 2,  2,  2, -2],
       [-2,  2, -2,  2]])


##ar의 값이 0보다 크면 2를 넣고, 0보다 작으면 원래 값을 출력하세요 
np.where(ar > 0, 2, ar) 


#결과 
array([[-0.40317695,  2.        ,  2.        ,  2.        ],
       [ 2.        ,  2.        ,  2.        ,  2.        ],
       [ 2.        ,  2.        ,  2.        , -1.34775906],
       [-1.270485  ,  2.        , -1.17312341,  2.        ]])

ツールバーの


sort()関数を使用します.

#먼저 ar이라는 배열을 만듭니다. 

ar = np.random.randn(5) 
print(ar) 

#결과 
[-0.43515355  1.84926373  0.67229476  0.40746184 -0.76991607] 

print(ar.sort(ar))

#결과 
[-0.76991607 -0.43515355  0.40746184  0.67229476  1.84926373]
[-0.43515355  1.84926373  0.67229476  0.40746184 -0.76991607]

#하지만 출력값만 정렬 됐을 뿐, 원본에는 반영되지 않았습니다. 


##원본에 sort정렬시키기

ar = np.random.randn(5) 
ar.sort()
print(ar)



2 D位置合わせ


まず、列と行の方向を決定する必要があります。axisを使用!


sort(1)列方向ソート/sort(0)行方向ソート。


#먼저 ar2라는 배열을 선언합니다.
ar2 = np.random.randn(5,3) 
print(ar2) 


##sort(1) 열 방항 정렬 

ar2.sort(1) 
print(ar2)

##sort(0) 행 방향 정렬 
ar2.sort(0)
print(ar2) 



ar3 = np.array([[8,12],[7,1]]) 
x = np.sort(ar3, axis=0) 
print(x) 

#결과 
[[ 7  1]
 [ 8 12]]
 
 
y = np.sort(ar3, axis=1) 
print(y) 

#결과 
[[ 8 12]
 [ 1  7]]

マトリクスの一意値出力


ユニークを使用します.
ar = np.array([3,3,2,2,1,1])
np.unique(ar)

#결과 
array([1, 2, 3])

True/Falseに出力し、ユーザーの問い合わせが正しいかどうかを確認します。


使用1 d()

values = np.array([6,0,0,3,2,5,6])

#원소들이 2,3,6 중 하나 라면 True, 아니면 False
np.in1d(values, [2,3,6])

array([ True, False, False,  True,  True, False,  True])

配列の保存、読み込み


ストレージはnpです.save()
npを読み込みます.load()を使用します.

arr = np.arange(10) 

#저장
np.save('some_array',arr) 

#읽어오기 
np.load('some_array.npy')

マトリックス積


dotの使用


例:x.dot(y)/np。dot(x,y)


x = np.arange(1,7).reshape(2,3) 
y = np.arange([[6., 23], [-1,7],[8,9]]) 

print(x) 

#결과 
[[1 2 3]
 [4 5 6]] 

print(y) 

#결과 
[[ 6. 23.]
 [-1.  7.]
 [ 8.  9.]] 


#두 행렬을 곱하기 
np.dot(x,y) 

#결과 

array([[ 28.,  64.],
       [ 67., 181.]])


# 0행 0열의 값 : 
1) x 0행에 0열과 y값 00열에 있는 원소를 곱한 값
2) x 01열값과 y값 10열에 있는 원소를 곱한 값 
3) x 02열값과 y값 20열에 있는 원소를 곱한 값

>>> 1) + 2) 3) 번 값이 곱해진 결과 

나머지도 위와 같은 순서로 나온 결과. 


# 아래 두행렬을 np.arange, rshape를 이용해서 생성 각각 a1, b1으로 저장하고 행렬 내적을 계산하세요 

a1 = np.arange(1,7).reshape(2,3) 
b1 = np.arange(10,16).reshape(3,2) 

c1 = np.dot(a1, b1) 

#결과 

array([[ 76,  82],
       [184, 199]])


逆行列:ある行列に乗算すると、対角線方向の値が1、残りの値が0の行列の値になります。


逆マトリクス生成法np。linalg.inv()の使用


np.random.seed(0) 

mt1 = np.random.randint(1,4, size=(3,3)) 
mt2 = np.linalg.inv(mt1)

print(mt2) 

#결과 
[[ 7. -1. -4.]
 [-1.  0.  1.]
 [-4.  1.  2.]]

#mt1과 mt2를 곱하면 역행렬이 나옵니다. 

np.dot(mt1, mt2) 


#결과 
array([[1., 0., 0.],
       [0., 1., 0.],
       [0., 0., 1.]])