-
[Numpy] 넘파이 한번에 끝내기파이썬 2022. 4. 6. 11:10
[Numpy] 넘파이 한번에 끝내기
1. NumPy 특징
2. 배열 생성
3. 배열 조회
4. 배열 값 삽입/수정/삭제/복사
5. 배열 변환
6. 배열 연산
7. 배열 입출력
---------------------------------------
1. NumPy 특징
- Numerical Python의 약자
- 고성능 과학 계산용 패키지로 강력한 N차원 배열 객체
- 범용적 데이터 처리에 사용 가능한 다차원 컨테이너
- 정교한 브로트캐스팅broadcasting 기능
- 파이썬의 자료형 list와 비슷하지만, 더 빠르고 메모리를 효율적으로 관리
- 반복문 없이 데이터 배열에 대한 처리를 지원하여 빠르고 편리
- 데이터 과학 도구에 대한 생태계의 핵심을 이루고 있음
2. 배열 생성
(1) 리스트로 배열 만들기
a1 = np.array([1,2,3,4,5]) print(a1) print(type(a1)) print(a1.shape) print(a1[0],a1[1],a1[2],a1[3],a1[4]) a1[0] = 4 a1[1] = 5 a1[2] = 6 print(a1)
a2 = np.array([[1,2,3], [4,5,6], [7,8,9]]) print(a2) print(type(a2)) print(a2.shape) print(a2[0],a2[1],a2[2]) print(a2[1][0],a2[1][1],a2[1][2]) print(a2[1,0],a2[1,1],a2[1,2])
a3 = np.array([[[1,2,3], [4,5,6],[7,8,9]], [[10,11,12],[13,14,15], [16,17,18]], [[19,20,21],[22,23,24],[25,26,27]]]) print(a3) print(type(a3)) print(a3.shape) print(a3[0,0,0],a3[1,1,1],a3[2,2,2])
(2) 배열 생성 및 초기법
- zeros(), ones(), full(), eye(), tri(), empty(), _like()
np.zeros(10)
np.ones((3,3))
np.full((3,3), 1.23)
np.eye(3)
np.tri(3)
np.empty(10)
print(a1) np.zeros_like(a1)
print(a2) np.ones_like(a2)
print(a3) np.full_like(a3, 10)
(3) 생성한 값으로 배열 생성
- arange(), linspace(), logspace()
np.arange(0,30,2)
np.linspace(0, 30, 15)
np.logspace(0.1, 1, 20)
(4) 랜덤값으로 배열 생성
함수 설명 인자 seed 난수 발생을 위한 시드 지정 permutation 순서를 임의로 바꾸거나 임의의 순열 반환 shuffle 리스트나 배열의 순서를 뒤섞음 random 랜덤한 수의 배열 생성 rand 균등분포에서 표본 추출 randint 주어진 최소/최대 범위의 난수 추출 randn 표준편차가 1, 평균값 0인 정규분포의 표본 추출 binomial 이항분포에서 표본 추출 normal 정규분포(가우시안)에서 표본 추출 beta 베타분포에서 표본 추출 chisquare 카이제곱분포에서 표본 추출 gamma 감마분포에서 표본 추출 uniform 균등(0,1)분포에서 표본 추출 np.random.random((3,3))
np.random.randint(0,10,(3,3))
np.random.normal(0,1, (3,3))
np.random.rand(3,3)
np.random.randn(3,3)
(5) 표준 데이터 타입
함수 설명 인자 bool_ 바이트로 저장된 블리언으로 True 또는 False를 가짐 int_ 기본 정수 타입 intc C언어에서 사용되는 int와 동일(일반적으로 int32 또는 int64) intp 인덱싱에 사용되는 정수(C언어에서 ssize_t와 동일. 일반적으로int32 또는 int64) int8 바이트 (-128~127) int16 정수(-32768 ~ 32767) int32 정수(-2147483648 ~ 2147483647) int64 정수(-9223372036854775808 ~ 9223372036854775808) uint8 부호없는 정수(0 ~ 255) uint16 부호없는 정수(0 ~ 65535) uint32 부호없는 정수(0 ~ 4294967295) uint64 부호없는 정수(0 ~ 18446744073709551615) float16 반정밀 부동소수점 : 부호비트, 5비트 지수, 10비트 가수 float32 단정밀 부동소수점 : 부호비트, 8비트 지수, 23비트 가수 float64 반정밀 부동소수점 : 부호비트, 11비트 지수, 52비트 가수 float_ float64를 줄여서 표현 complex64 복소수, 두 개의 32비트 부동소수점으로 표현 complex128 복소수, 두 개의 64비트 부동소수점으로 표현 complex_ complex128을 줄여서 표현 np.zeros(20, dtype=int)
np.ones((3,3), dtype=bool)
np.full((3,3), 1.0, dtype=float)
(6) 날짜/시간 배열 생성
코드 의미 상대적 시간 범위 절대적 시간 범위 Y 연 ±9.2e18년 [9.2e18 BC, 9.2e18 AD] M 월 ±7.6e17년 [7.6e17 BC, 7.6e17 AD] W 주 ±1.7e17년 [1.7e17 BC, 1.7e17 AD] D 일 ±2.5e16년 [2.5e16 BC, 9.2e16 AD] h 시 ±1.0e15년 [1.0e15 BC, 1.0e15 AD] m 분 ±1.7e13년 [1.7e13 BC, 1.7e13 AD] s 초 ±2.9e12년 [2.9e9 BC, 2.9e9 AD] ms 밀리초 ±2.9e9년 [2.9e6 BC, 2.9e6 AD] us 마이크로초 ±2.9e6년 [290301 BC, 294241 AD] ns 나노초 ±292년 [1678 BC, 2262 AD ps 피코초 ±106년 [1969 BC, 1969 AD] fs 펨토초 ±2.6시간 [1969 BC, 1969 AD] as 아토초 ±9.2초 [1969 BC, 1969 AD] date = np.array('2020-01-01', dtype=np.datetime64) date
date + np.arange(10)
datetime = np.datetime64('2022-04-05 13:55') datetime
datetime = np.datetime64('2022-04-05 13:55:14.56', 'ns') datetime
3. 배열 조회
(1) 배열 속성 정보
def array_info(array): print(array) print(f'ndim: {array.ndim}') print(f'shape: {array.shape}') print(f'dtype: {array.dtype}') print(f'size: {array.size}') print(f'itemsize: {array.itemsize}') print(f'nbytes: {array.nbytes}') print(f'strides: {array.strides}')
array_info(a1) # 1차원 array_info(a2) # 2차원 array_info(a3) # 3차원
(2) 인덱싱
print(a1) print(a1[0]) print(a1[2]) print(a1[-1]) print(a1[-2])
print(a2) print(a2[0,0]) print(a2[2,2]) print(a2[-1,1]) print(a2[-2,2])
print(a3) print(a3[0,0,0]) print(a3[2,2,1]) print(a3[-1,1,1]) print(a3[-2,2,2])
(3) 슬라이싱
- 슬라이싱 구문 : a[start:stop:step]
- 기본값 : start(0), stop(ndim), step(1)
print(a1) print(a1[0:3]) print(a1[0:]) print(a1[:1]) print(a1[::2]) print(a1[::-1])
print(a2) print(a2[1]) print(a2[1, :-1]) print(a2[:2, :2]) print(a2[1:, ::-1]) print(a2[::-1, ::-1])
(4) 불리언 인덱싱
- 배열 각 요소의 선택 여부를 불리언(True/False)로 지정
- True값인 인덱스의 값만 조회
print(a1) bi = [False, True, True, False, True] print(a1[bi]) bi = [True, False, True, True, False] print(a1[bi])
print(a2) bi = np.random.randint(0,2,(3,3),dtype=bool) print(bi) print(a2[bi])
(5) 팬시 인덱싱
print(a1) print([a1[0],a1[2]]) ind = [0,2] print(a1[ind]) ind = np.array([[0, 1], [2, 0]]) print(ind) print(a1[ind])
print(a2) row = np.array([0,2]) col = np.array([1,2]) print(a2[row,col]) print(a2[row, :]) print(a2[:, col]) print(a2[row,1]) print(a2[2,col]) print(a2[row,1:]) print(a2[1:, col])
4. 배열 값 삽입/수정/삭제/복사
(1) 배열 값 삽입
- insert() : 배열의 특정 위치에 값 삽입
- axis를 지정하지 않으면 1차원 배열로 변환
- 추가할 방향을 axis로 지정
- 원본 배열 변경없이 새로운 배열 반환
print(a1) b1 = np.insert(a1, 0, 10) print(b1) c1 = np.insert(a1, 2, 10) print(c1)
print(a2) b2 = np.insert(a2, 1, 10, axis=0) print(b2) c2 = np.insert(a2, 1, 10, axis=1) print(c2)
(2) 배열 값 수정
- 배열의 인덱싱으로 접근하여 값 수정
print(a1) a1[0] = 1 a1[1] = 2 a1[2] = 3 print(a1) a1[:2] = 9 print(a1) i = np.array([1,3,4]) a1[i] = 0 print(a1) a1[i] += 4 print(a1)
print(a2) a2[0,0] = 1 a2[1,1] = 2 a2[2,2] = 3 a2[0] = 1 print(a2) a2[1:, 2] = 9 print(a2) row = np.array([0, 1]) # 팬시 인덱싱 col = np.array([1, 2]) a2[row,col] = 0 print(a2)
print(a2) a2[1,0] = 1 a2[1,1] = 2 a2[1,2] = 3 print(a2) a2[2,:2] = 9 print(a2) row = np.array([])
(3) 배열 값 삭제
- delete() : 배열의 특정 위치에 값 삭제
- axis를 지정하지 않으면 1차원 배열로 변환
- 삭제할 방향을 axis로 지정
- 원본 배열 변경없이 새로운 배열 반환
print(a1) b1 = np.delete(a1, 1) print(b1) print(a1)
print(a2) b2 = np.delete(a2, 1, axis=0) c2 = np.delete(a2, 1, axis=1) print(b2) print(c2) print(a2)
(4) 배열 복사
- 리스트 자료형과 달리 배열의 슬라이스는 복사본이 아님
print(a2) print(a2[:2, :2]) a2_sub = a2[:2, :2] print(a2_sub) a2_sub[:, 1] = 0 print(a2_sub) print(a2)
- copy(): 배열이나 하위 배열 내의 값을 명시적으로 복사
print(a2) a2_sub_copy = a2[:2, :2].copy() print(a2_sub_copy) a2_sub_copy[:,1] = 2 print(a2_sub_copy) print(a2)
5. 배열 변환
구분 함수 설명 인자 배열 전치 .T 전치 메소드 없음 배열 축 변경 swapaxis 축 변경 array_like, axis1, axis2 배열 재구조화 reshape 배열의 형상 변경 array_like, nwe_shape, order newaxis 새로운 축 추가 없음 배열 크기 변경 resize 배열 크기 변경 array_like, nwe_shape, refcheck 배열 추가 append 배열의 끝에 값 추가 array_like, values, axis 배열 연결 concatenate 튜플이나 배열의 리스트를 인수로 사용해 배열 연결 array_like, axis vstack 수직 스택, 1차원으로 연결 array_like, axis hstack 수평 스택, 2차원으로 연결 array_like, axis dstack 깊이 스택, 3차원으로 연결 array_like, axis stack 새로운 차원으로 연결 array_like, axis 배열 분할 split 배열 분할 array_like, indices_or_sections, axis vsplit 수직 분할, 1차원으로 분할 array_like, indices_or_sections, axis hsplit 수평 분할, 2차원으로 분할 array_like, indices_or_sections, axis dsplit 깊이 분할, 3차원으로 분할 array_like, indices_or_sections, axis (1) 배열 전치 및 축 변경
print(a2) print(a2.T)
print("원본 배열\n",a3) print("\n\n전치 배열\n",a3.T)
print(a2) print(a2.swapaxes(1, 0))
print(a3) print("\n\n전치 배열\n",a3.swapaxes(0, 1)) print("\n\n전치 배열\n",a3.swapaxes(1, 2))
(2) 배열 재구조화
n1 = np.arange(1,10) print(n1) print(n1.reshape(3,3))
print(n1) print(n1[np.newaxis, :5]) print(n1[:5, np.newaxis])
(3) 배열 크기 변경
n2 = np.random.randint(0,10,(2,5)) print(n2) n2.resize((5,2)) print(n2)
n2.resize((5, 5), refcheck=False) print(n2)
n2.resize((3,3), refcheck=False) print(n2)
(4) 배열 추가
a2 = np.arange(1,10).reshape(3,3) print(a2) b2 = np.arange(10,19).reshape(3,3) print(b2)
c2 = np.append(a2, b2) print(c2)
c2 = np.append(a2, b2, axis=0) print(c2)
c2 = np.append(a2, b2, axis=1) print(c2)
(5) 배열 연결
a1 = np.array([1,2,3]) b1 = np.array([4,5,6]) np.concatenate([a1, b1])
c1 = np.array([7,8,9]) np.concatenate([a1, b1, c1])
a2 = np.array([[1,2,3], [4,5,6]]) np.concatenate([a2,a2])
a2 = np.array([[1,2,3], [4,5,6]]) np.concatenate([a2,a2], axis=1)
np.vstack([a2,a2])
np.hstack([a2,a2])
np.dstack([a2,a2])
np.stack([a2,a2])
(6) 배열 분할
a1 = np.arange(0,10) print(a1) b1, c1 = np.split(a1, [5]) print(b1,c1) b1, c1, d1, e1, f1 = np.split(a1, [2,4,6,8]) print(b1,c1,d1, e1, f1)
a2 = np.arange(1,10).reshape(3,3) print(a2) b2, c2 = np.vsplit(a2, [2]) print(b2) print(c2)
a2 = np.arange(1,10).reshape(3,3) print(a2) b2, c2 = np.hsplit(a2, [2]) print(b2) print(c2)
a3 = np.arange(1,28).reshape(3,3,3) print(a3) b3, c3 = np.dsplit(a3, [2]) print(b3) print(c3)
6. 배열 연산
- NumPy의 배열 연산은 벡터화(vectorized) 연산을 사용
- 일반적으로 NumPy의 범용 함수(universal functions)를 통해 구현
- 배열 요소에 대한 반복적인 계산을 효율적으로 수행
(1) 브로드캐스팅Broadcasting
a1 = np.array([1,2,3]) print(a1) print(a1 + 5) a2 = np.arange(1,10).reshape(3,3) print(a2) print(a1 + a2) b2 = np.array([1,2,3]).reshape(3,1) print(b2) print(a1 + b2)
(2) 산술 연산
연산자 범용 함수 설명 + np.add 덧셈 - np.subtract 뺄셈 - np.negative 단항 음수 * np.multiply 급셈 / np.divide 나눗셈 // np.floor_divide 나눗셈 내림 ** np.power 지수 연산 % np.mod 나머지 연산 a1 = np.arange(1, 10) print(a1) print(a1 + 1) print(np.add(a1, 10)) print(a1 - 2) print(np.subtract(a1, 10)) print(-a1) print(np.negative(a1)) print(a1 * 2) print(np.multiply(a1, 2)) print(a1 / 2) print(np.divide(a1, 2)) print(a1 // 2) print(np.floor_divide(a1, 2)) print(a1 ** 2) print(np.power(a1,2)) print(a1 % 2) print(np.mod(a1,2))
구분 함수 설명 절대값 np.absolute, np.abs 내장된 절대값 함수 제곱/ np.square 제곱 함수 제곱근 np.sqrt 제곱근 함수 지수함수 np.exp 자연상수의 지수함수 np.exp2 2의 지수함수 np.power 지수함수. 인자 (x, a) x(밑) a(지수) 로그 np.log 자연상수의 로그함수 np.log2 2의 로그함수 np.log10 10의 로그함수 a1 = np.arange(1,10) print(a1) b1 = np.random.randint(1,10,size=9) print(b1) print(a1 + b1) print(a1 - b1) print(a1 * b1) print(a1 / b1) print(a1 // b1) print(a1 % b1)
a2 = np.arange(1,10).reshape(3,3) print(a2) b2 = np.random.randint(1,10,(3,3)) print(b2) print(np.add(a2,b2)) print(np.subtract(a2,b2)) print(np.multiply(a2,b2)) print(np.divide(a2,b2)) print(np.floor_divide(a2,b2)) print(np.power(a2,b2))
a1 = np.random.randint(-10, 10, size=5) print(a1) print(np.absolute(a1)) print(np.abs(a1))
print(a1) print(np.square(a1)) print(np.sqrt(a1))
a1 = np.random.randint(1,10,size=5) print(a1) print(np.exp(a1)) print(np.exp2(a1)) print(np.power(a1, 2))
구분 함수 설명 삼각함수 np.sin(array) 요소별 사인 np.cos(array) 요소별 코사인 np.tan(array) 요소별 탄젠트 np.arcsin(array) 요소별 아크 사인 np.arccos(array) 요소별 아크 코사인 np.arctan(array) 요소별 아크 탄젠트 np.arctan2(array1, array2) 요소별 아크 탄젠트 array1/array2 np.sinh(array) 요소별 하아퍼블릭 사인 np.cosh(array) 요소별 하아퍼블릭 코사인 np.tanh(array) 요소별 하아퍼블릭 탄젠트 np.arcsinh(array) 요소별 하이퍼블릭 아크 사인 np.arccosh(array) 요소별 하이퍼블릭 아크 코사인 np.arctanh(array) 요소별 하이퍼블릭 아크 탄젠트 np.deg2rad(array) 요소별 각도에서 라디안 변환 np.rad2deg(array) 요소별 라디안에서 각도 변환 t = np.linspace(0, np.pi, 3) print(t) print(np.sin(t)) print(np.cos(t)) print(np.tan(t))
x = [-1, 0, 1] print(x) print(np.arcsin(x)) print(np.arccos(x)) print(np.arctan(x))
(3) 집계 함수
함수 NaN 안전모드 설명 np.sum np.nansum 요소의 합 np.cumsum np.nancumsum 요소의 누적 합 np.diff N/A 요소의 차분 np.prod np.nanprod 요소의 곱 np.cumprod np.nancumprod 요소의 누적 곱 np.dot N/A 점 곱(dot product) np.matmul N/A 행렬 곱 np.tensordot N/A 텐서곱(tensor product) np.cross N/A 벡터 곱 np.inner N/A 벡터 내적 np.outer N/A 벡터 외적 np.mean np.nanmean 요소의 평균 계산 np.std np.nanstd 표준편차 계산 np.var np.nanvar 분산 np.min np.nanmin 최소값 np.max np.nanmax 최대값 np.argmin np.nanargmin 최소값 인덱스 np.argmax np.nanargmax 최대값 인덱스 np.median np.nanmedian 중앙값 np.percentile np.nanpercentile 요소의 순위 기반 백분위 수 계산 np.any N/A 요소 중 참이 있는지 평가 np.all N/A 모든 요소가 참인지 평가 a2 = np.random.randint(1, 10, size=(3,3)) print(a2) print(a2.sum(), np.sum(a2)) print(a2.sum(axis=0), np.sum(a2, axis=0)) print(a2.sum(axis=1), np.sum(a2, axis=1))
a2 = np.random.randint(1, 10, size=(3,3)) print(a2) print(np.cumsum(a2)) print(np.cumsum(a2, axis=0)) print(np.cumsum(a2, axis=1))
a2 = np.random.randint(1, 10, size=(3,3)) print(a2) print(np.diff(a2)) print(np.diff(a2, axis=0)) print(np.diff(a2, axis=1))
a2 = np.random.randint(1, 10, size=(3,3)) print(a2) print(np.prod(a2)) print(np.prod(a2, axis=0)) print(np.prod(a2, axis=1))
a2 = np.random.randint(1, 10, size=(3,3)) print(a2) print(np.cumprod(a2)) print(np.cumprod(a2, axis=0)) print(np.cumprod(a2, axis=1))
print(a2) b2 = np.ones_like(a2) print(b2) print(np.dot(a2, b2)) print(np.matmul(a2, b2))
print(a2) print(b2) print(np.tensordot(a2, b2)) print(np.tensordot(a2, b2, axes=0)) print(np.tensordot(a2, b2, axes=1))
x = [1,2,3] y = [4,5,6] print(np.cross(x, y))
print(a2) print(b2) print(np.inner(a2, b2)) print(np.outer(a2, b2))
print(a2) print(np.mean(a2)) print(np.mean(a2, axis=0)) print(np.mean(a2, axis=1))
print(a2) print(np.std(a2)) print(np.std(a2, axis=0)) print(np.std(a2, axis=1))
print(a2) print(np.var(a2)) print(np.var(a2, axis=0)) print(np.var(a2, axis=1))
print(a2) print(np.min(a2)) print(np.min(a2, axis=0)) print(np.min(a2, axis=1))
print(a2) print(np.max(a2)) print(np.max(a2, axis=0)) print(np.max(a2, axis=1))
print(a2) print(np.argmin(a2)) print(np.argmin(a2, axis=0)) print(np.argmin(a2, axis=1))
print(a2) print(np.argmax(a2)) print(np.argmax(a2, axis=0)) print(np.argmax(a2, axis=1))
print(a2) print(np.median(a2)) print(np.median(a2, axis=0)) print(np.median(a2, axis=1))
a1 = np.array([0,1,2,3]) print(a1) print(np.percentile(a1, [0, 20, 40, 60, 80, 100], interpolation='linear')) print(np.percentile(a1, [0, 20, 40, 60, 80, 100], interpolation='higher')) print(np.percentile(a1, [0, 20, 40, 60, 80, 100], interpolation='lower')) print(np.percentile(a1, [0, 20, 40, 60, 80, 100], interpolation='nearest')) print(np.percentile(a1, [0, 20, 40, 60, 80, 100], interpolation='midpoint'))
a2 = np.array([[False, False, False], [False, True, True], [False, True, True]]) print(a2) print(np.any(a2)) print(np.any(a2, axis=0)) print(np.any(a2, axis=1))
a2 = np.array([[False, False, True], [True, True, True], [False, True, True]]) print(a2) print(np.all(a2)) print(np.all(a2, axis=0)) print(np.all(a2, axis=1))
(4) 비교 연산
연산자 비교 범용 함수 설명 == np.equal != np.not_equal < np.less <= np.less_equal > np.greater >= np.greater_equal 비교 범용 함수 설명 np.isclose 배열 두 개가 (z*1e+02)% 내외로 가까우면 True, 아니면 False np.isinf 배열이 inf이면 True, 아니면 False np.isfinite 배열이 inf, nan이면 False, 아니면 False np.isnan 배열이 nan이면 True, 아니면 False a1 = np.arange(1, 10) print(a1) print(a1 == 5) print(a1 != 5) print(a1 < 5) print(a1 <= 5) print(a1 > 5) print(a1 >= 5)
a2 = np.arange(1,10).reshape(3,3) print(a2) print(np.sum(a2)) print(np.count_nonzero(a2 > 5)) print(np.sum(a2 > 5)) print(np.sum(a2 > 5, axis=0)) print(np.sum(a2 > 5, axis=1)) print(np.any(a2 > 5)) print(np.any(a2 > 5, axis=0)) print(np.any(a2 > 5, axis=1)) print(np.all(a2 > 5)) print(np.all(a2 > 5, axis=0)) print(np.all(a2 > 5, axis=1))
a1 = np.array([1,2,3,4,5]) print(a1) b1 = np.array([1,2,3,3,4]) print(b1) print(np.isclose(a1, b1))
a1 = np.array([np.nan, 2, np.inf, 4, np.NINF]) print(a1) print(np.isnan(a1)) print(np.isinf(a1)) print(np.isfinite(a1))
연산자 비교 범용 함수 설명 & np.bitwise_and | np.bitwise_or ^ np.bitwise_xor ~ np.bitwise_not a2 = np.arange(1,10).reshape(3,3) print(a2) print((a2 > 5) & (a2 < 8)) print(a2[(a2 > 5) & (a2 < 8)]) print((a2 > 5) | (a2 < 8)) print(a2[(a2 > 5) | (a2 < 8)]) print((a2 > 5) ^ (a2 < 8)) print(a2[(a2 > 5) ^ (a2 < 8)]) print((a2 > 5) & (a2 < 8)) print(a2[(a2 > 5) & (a2 < 8)]) print(~(a2 > 5)) print(a2[~(a2 > 5)])
(5) 배열 정렬 sort
함수 설명 인자 np.sort 배열을 정렬 array_like, axis np.argsort 배열을 정열하였을 때 인덱스 반환 array_like, axis np.partition 배열에서 k개의 작은 값을 반환 array_like, k, axis a1 = np.random.randint(1,10,size=10) print(a1) print(np.sort(a1)) print(a1) print(np.argsort(a1)) print(a1) print(a1.sort()) print(a1)
a2 = np.random.randint(1,10, size=(3,3)) print(a2) print(np.sort(a2, axis=0)) print(np.sort(a2, axis=1))
a1 = np.random.randint(1,10, size=10) print(a1) print(np.partition(a1, 3))
a2 = np.random.randint(1,10,size=(5,5)) print(a2) print(np.partition(a2, 3)) print(np.partition(a2, 3, axis=0)) print(np.partition(a2, 3, axis=1))
7. 배열 입출력
함수 설명 파일종류 인자 np.save NumPy 배열 객체 1개를 파일에 저장 바이너리 file_name, array np.savez NumPy 배열 객체 여러 개를 파일에 저장 바이너리 file_name, arrays np.load NumPy 배열 저장 파일로부터 객체 로딩 바이너리 file_name np.loadtxt 텍스트 파일로부터 배열 로딩 텍스트 np.savetxt 텍스트 파일에 NumPy배열 객체 저장 텍스트 a2 = np.random.randint(1,10, size=(3,3)) print(a2) np.save("a", a2)
b2 = np.random.randint(1,10, size=(3,3)) print(b2) np.savez("ab", a2, b2)
npy = np.load("a.npy") print(npy)
npz = np.load("ab.npz") print(npz.files) print(npz['arr_1'])
print(a2) np.savetxt("a.csv", a2, delimiter=',')
csv = np.loadtxt("a.csv", delimiter=',') print(csv)
print(b2) np.savetxt("b.csv", b2, delimiter=',', fmt='%.2e', header='c1,c2,c3')
csv = np.loadtxt("b.csv", delimiter=',') print(csv)
'파이썬' 카테고리의 다른 글
[파이썬]09. 모듈과 패키지 (0) 2022.03.31 [파이썬]08. 객체와 클래스 (0) 2022.03.30 [파이썬]07. 함수 (0) 2022.03.29 [파이썬]06. 입력과 출력 (0) 2022.03.28 [파이썬]03. 문자열 (0) 2022.03.27