[Python] Numpy
Numpyとは?
Numerical Pythonの略.
科学計算とデータ分析のためのPythonパッケージ
長所
endarrayオブジェクトを使用すると、Pythonで使用されている大きなデータセットをn次元配列で表示できます.
1)カレンダーの作成
endarrayオブジェクトはarang()およびarray([])です.
import numpy as np
A = np.arange(5)
B = np.array([0,1,2,3,4]) #파이썬 리스트를 numpy ndarray로 변환
C = np.array([0,1,2,3,'4'])
#'4'가 들어갔다는 이유로, 0,1,2,3이 모두 문자열로 바뀜
#array는 모든 요소의 type가 동일해야하기 때문
#문자를 숫자로 바꿀 순 없지만, 숫자는 모든 문자열로 바꿀 수 있기 때문에 모든 문자열로 해석해서 실행
실행값
A,B = [0 1 2 3 4]
C = ['0' '1' '2' '3' '4']
2)寸法方法
A = np.arange(10).reshape(2, 5)
#원소 10개의 ndarray를 2 X 5행렬로 reshape
#=#길이 10의 1차원 행렬을 2X5 2차원 행렬로 바꿈
print("행렬의 모양:", A.shape)
print("행렬의 축 개수:", A.ndim)
print("행렬 내 원소의 개수:", A.size)
실행값
행렬의 모양: (2, 5) #reshape됨
행렬의 축 개수: 2 #축은 2개
행렬 내 원소의 개수: 10 #원소 10개는 동일
3)内蔵関数タイプ
#Numpy의 원소는 꼭 동일한 데이터type이어야 함.
A= np.arange(6).reshape(2, 3)
print(A)
print(A.dtype) #dtype : numpy ndarray의 원소 데이터 타입 반환
print(type(A)) #행렬 A의 자료형 반환
print("-------------------------")
B = np.array([0, 1, 2, 3, 4, 5])
print(B)
print(B.dtype)
print(type(B))
print("-------------------------")
C = np.array([0, 1, 2, 3, '4', 5])
print(C)
print(C.dtype)
print(type(C))
print("-------------------------")
D = np.array([0, 1, 2, 3, [4, 5], 6], dtype=object)
#[]로 리스트 객체 원소 -> 동일한 데이터 type이 아닌 상황 -> dtype를 object로 지정해, dtype일치시킴
print(D)
print(D.dtype)
print(type(D))
D실행값
[0 1 2 3 list([4, 5]) 6]
object
<class 'numpy.ndarray'>
#효율적인 방법으로 type을 변화시켜 관리
C = np.array([0,1,2,3,'4',5])
print(C[0]) #문자열 0
print(type(C[0]))
print(C[4])
print(type(C[4]))
print("------------------------------")
D = np.array([0,1,2,3,[4,5],6], dtype=object)
print(D[0]) #정수 0
print(type(D[0]))
print(D[4])
print(type(D[4]))
실행값
0
<class 'numpy.str_'>
4
<class 'numpy.str_'>
------------------------------
0
<class 'int'>
[4, 5]
<class 'list'>
4)特殊行列
np.eye(3)
실행값
array([[1., 0., 0.],
[0., 1., 0.],
[0., 0., 1.]])
np.zeros([2,3])
실행값
array([[0., 0., 0.],
[0., 0., 0.]])
np.ones([3,3])
실행값
array([[1., 1., 1.],
[1., 1., 1.],
[1., 1., 1.]])
5)放送演算
異なるサイズのカレンダー間で算術演算を許可する機能
A = np.arange(9).reshape(3,3) #9개의 원소, 3x3배열
A
array([[0, 1, 2],
[3, 4, 5],
[6, 7, 8]])
# ndarray A에 2를 상수배 했을 때,
A * 2 #각 요소에 *2를 했을 때
array([[ 0, 2, 4],
[ 6, 8, 10],
[12, 14, 16]])
# ndarray A에 2를 더했을 때,
A + 2 #각 요소에 2를 더했을 때
array([[ 2, 3, 4],
[ 5, 6, 7],
[ 8, 9, 10]])
# 3 X 3 행렬에 1 X 3 행렬을 더했을 때
A = np.arange(9).reshape(3,3) #3x3행렬
B = np.array([1, 2, 3]) #1x3행렬
print("A:", A)
print("B:", B)
print("\nA+B:", A+B)
A: [[0 1 2]
[3 4 5]
[6 7 8]]
B: [1 2 3]
A+B: [[ 1 3 5] #0+1, 1+2, 2+3
[ 4 6 8] #3+1, 4+2, 5+3
[ 7 9 11]]
#*3x3행렬에 1x2행렬을 더하는 것은 허용되지 않는다
6)スライスとインデックス
# 3 X 3 행렬의 첫번째 행 구하기
A = np.arange(9).reshape(3,3)
print("A:", A)
B = A[0]
print("B:", B)
실행값
A: [[0 1 2]
[3 4 5]
[6 7 8]]
B: [0 1 2]
print(A[0, 1]) #0,1을 인덱싱하면 A의 첫번째 행에서 두번째 값을 참조
print(B[1])
水平軸に沿ってスライド:array[n:n]
垂直軸に沿ってスライド:array[:,n:n]
すべて使用:array[n:n,n:n]
*array[:2]=水平軸0、2番目のインデックスを除くシート
A[:-1] #인덱스 0부터 인덱스 위치 -1까지의 배열 섹션
array([[0, 1, 2],
[3, 4, 5]])
print(A[:,2:]), print(A[:,-1:])
[[2]
[5]
[8]]
print(A[:,1:]), print(A[:,-2:])
[[1 2]
[4 5]
[7 8]]
print(A[:,:]), print(A[:,-3:])
[[0 1 2]
[3 4 5]
[6 7 8]]
A[1,:2]
array([3, 4])
A[:2, 1:]
array([[1, 2],
[4, 5]])
A[:,-1]
array([2, 5, 8])
💥グライダーの理解と練習が必要です📆 2021-12-31
📚 FUNDAMENTALS NODE9
Reference
この問題について([Python] Numpy), 我々は、より多くの情報をここで見つけました https://velog.io/@yenaryu/Python-Numpyテキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol