test_array = np.array([1,4,5,8],float)
print(test_array)
type(test_array[3])
List
# ndarray & List 비교
a = [1,2,3,4,5]
b = [5,4,3,2,1]
a[0] is b[-1]
is 라는 것은 메모리 주소를 비교하는 것이고, 리스트는 주소(위치)를 저장하기 때문에 메모리 비교를 하게 되면 True가 출력된다.
ndarray
a = np.array(a)
b = np.array(b)
a[0] is b[-1]
반대로 array는 새로운 메모리에 할당하여 다른 메모리 주소를 가지기 때문에 False를 출력한다.
test_array = np.array([1,4,5,"8"], float)
print(test_array)
print(type(test_array[3]))
print(test_array.dtype)
print(test_array.shape)
ndim : number of dimensions (x,y,z)
tensor = [[[1,2,5,8],[1,2,5,8],[1,2,5,8]],
[[1,2,5,8],[1,2,5,8],[1,2,5,8]],
[[1,2,5,8],[1,2,5,8],[1,2,5,8]]]
np.array(tensor,int).shape
test_matrix = [[1,2,3,4],[1,2,5,8]]
np.array(test_matrix).shape
np.array(test_matrix).reshape(1,-1).shape
np.array(test_matrix).reshape(1,-1,2).shape
다차원 array를 1차원 array로 변환
test_matrix = [[[1,2,3,4],[1,2,5,8]],
[[1,2,3,4],[1,2,5,8]]
]
np.array(test_matrix).shape
np.array(test_matrix).flatten().shape
list와 달리 이차원 배열에서 [0,0] 표기법을 제공함
matrix 일 경우 앞은 row 뒤는 column을 의미
test_example = np.array([[1,2,3,4],[1,2,5,8]],int)
print(test_example[0,1])
print(test_example[0][1])
list와 달리 행과 열 부분을 나눠서 slicing이 가능함
matrix의 부분 집합을 추출할 때 유용함
test_example = np.array([[1,2,3,4],[1,2,5,8]],int)
print(test_example[:,2:])
print(test_example[1,1:3])
print(test_example[1:3])
array의 범위를 지정하여, 값의 list를 생성하는 명령어
range : List의 range와 같은 효과
np.arange(30)
np.arange(0,10,0.5) # floating point도 가능
np.arange(30).reshape(5,6)
특정 값을 가지는 행렬 생성
np.zeros(shape=(10,), dtype=np.int8)
np.ones(shape=(10,), dtype=np.int8)
np.empty(shape=(10,), dtype=np.int8)
같은 reshape의 특정 값을 가지는 행렬 생성
test_matrix = np.arange(30).reshape(5,6)
np.ones_like(test_matrix)
단위행렬 생성
np.identity(n=3, dtype=np.int8)
np.identity(5)
대각선이 1인 행렬 생성
identity와 다르게 시작 값을 지정할 수 있다.
np.eye(3)
np.eye(3,5,k=2)
np.eye(N=3,M=5,dtype=np.int8)
대각 행렬의 값을 추출
eye와 마찬가지로 시작값 지정 가능
matrix = np.arange(9).reshape(3,3)
np.diag(matrix)
np.diag(matrix, k=1)
데이터 분포에 따른 sampling으로 array를 생성
np.random.uniform(0,1,10).reshape(2,5) # 균등분포
np.random.normal(0,1,10).reshape(2,5) # 정규분포
Operations b/t arrays
matrix 기본 연산
test_a = np.arange(1,7).reshape(2,3)
test_b = np.arange(7,13).reshape(3,2)
test_a.dot(test_b)
전치
test_a = np.arange(1,7).reshape(2,3)
test_a.T
shape이 다른 배열 간 연산 지원
test_matrix = np.array([[1,2,3],[4,5,6]], float)
scalar = 3
test_matrix + scalar
scalar - vector 외에도 vector - matrix 간의 연산도 지원
numpy performance
comparisons
Any : 하나라도 조건이 성립하면 True
All : 모든 element가 조건을 만족해야 True
element간 비교의 결과를 boolean type으로 반환
a = np.arange(10)
np.any(a>5) , np.any(a<0)
np.all(a>5) , np.all(a<10)
whrere(condition, True, False)
condition 에 따라 True이면 True 자리에 있는 값 반환, False면 False 자리에 있는 값 반환
condition 단일로 사용하게 되면 조건에 해당하는 index 반환
np.where(a>0,3,2)
a = np.arange(10)
np.where(a>5)
argmin : array 내 최소값의 index 반환
argmax : array 내 최대값의 index 반환
argsort : array 내 element 정렬의 순서 반환
a = np.array([1,2,3,4,5,8,78,23,3])
a.argsort()
np.argmax(a)
np.argmin(a)
a[np.argmax(a)]
a[np.argmin(a)]
boolean index
boolean array를 사용하여 특정 조건에 맞는 값을 뽑아오는 것
특정 조건에 따른 값을 배열 형태로 추출
같은 모양의 boolean list를 사용하여 값을 추출
test_array = np.array([1,4,0,2,3,8,9,7],float)
test_array > 3
test_array[test_array > 3]
fancy index
numpy는 array를 index value로 사용해서 값 추출
boolean index와 다르게 모양이 같을 필요는 없지만, index 범위를 벗어나면 안된다.
integer list를 사용하여 값을 추출
a = np.array([2,4,6,8],float)
b = np.array([0,0,1,3,2,1], int)
a[b]
txt tpye 읽기/저장