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값 0행 0열에 있는 원소를 곱한 값
2) x 0행 1열값과 y값 1행 0열에 있는 원소를 곱한 값
3) x 0행 2열값과 y값 2행 0열에 있는 원소를 곱한 값
>>> 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.]])
Reference
この問題について(21.07.22オーバーフローベース(3)), 我々は、より多くの情報をここで見つけました https://velog.io/@rokomoko/21.07.22넘파이-기초3テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol