
이제부터 배열 객체를 x 라고 칭함
numpy를 np라 칭함
import numpy as np
x = np.array([1,2,3,'hi',5])
-> 이렇게 배열을 하나의 자료형으로 처리하지 않으면 dtype=object
-> 이것은 배열의 속도에서의 이점을 활용하지 못한다.
x.type
-> 배열의 자료형을 반환
x.ndim / np.ndi(x)
-> 배열의 축의 개수를 반환
x.shape / np.shape(x)
-> 배열의 크기와 차원을 반환 (튜플형식)
x.size / np.size(x)
배열의 원소 개수를 반환
np.arange(n)
-> range함수와 완벽히 같다. 아마 array range아닐까?
시작값, 끝값, 스텝
np.empty((n,m))
-> (행, 열) 입력
-> 행렬에 더미값이 차서 나온다
np.ones((n,m))
-> (행, 열) 입력
-> 행렬에 1이 차서 나온다
-> 행렬의 특성으로 원하는 수를 곱하면 원하는 수로 차있는 행렬이 완성
-> 사실 full 함수로 원하는 행렬 만들 수 있지만 외우는 포인트를 줄이자
np.zeros((n,m))
-> (행, 열) 입력
-> 행렬에 0이 차서 나온다
np.eye((n,m))
-> 단위행렬 만드는 함수
-> (정수1개) 입력
-> 입력한 정수 크기의 단위 행렬을 반환
-> 3입력했다면 3*3 의 단위행렬이 만들어진다.
x.dtype
-> 배열의 요소의 타입을 조회
x.reshape((n,m...)) / np.reshape(x, ((n,m...)))
-> ()에 원하는 차원 입력
-> 원하는 차원들의 곱과 배열의 요소 개수가 같다면, 원하는 차원의 배열 생성
x.resize((n,m...))
-> 원하는 차원 입력
-> 원하는 차원들의 곱과 배열의 요소 개수가 같다면, 원본의 차원 변경
x.view()
-> x와 데이터를 공유하는 배열을 생성
-> 생성된 배열과 x에 변화를 주면 서로 서로 영향을 받는다.
x[n,m...]
-> 배열의 조회하고자 하는 인덱스 입력
-> 차원은 콤마로 구분 -> 리스트와 다르다!
-> 배열의 해당 인덱스의 값을 반환
np.T
-> 배열을 전치한다.
-> 1차원은 전치 할 수 없다.
1차원 경우 예시
arr = np.array([1,2,3,4])
arr, arr.shape
-> 1차원의 크기가 4이다.
이떄 전치를 해본다면
arrt = arr.T
arrt, arrt.shape
-> 전치가 일어나지 않음을 알 수 있다.
arr = np.array([[1,2,3,4]])
arr, arr.shape

arrt = arr.T
arrt, arrt.shape

-> 1차원과 2차원의 크기가 서로 바뀌었다.
18.np.transpose(x)
x = np.array([1,2,3,4])
y = np.array([8,7,1,2])
print(np.maximum(x,y))
print(np.maximum(x,9))
print(np.maximum(7,y))
print(np.maximum(5,6))

np.minimum(x,y)
-> maximum과 똑같은 원리로 작은 값을 반환한다.
np.isnan(x)
-> 배열 x에 요소를 조회하고, nan의 인덱스에 True를 요소를 가지는 배열을 반환한다.
x=np.array([1,2,np.nan,3,np.nan])
np.isnan(x)

x = np.array([[1,2,0],
[3,4,0],
[5,6,0]])
print('1) : ',x[:,1])
print('2) : ',x[1,:])
print('3) : ',x[1,:])
print('4) : ',x[0:2,1:2])
print('5) : ',x[1,0:-1])
