NumPy

장재성·2021년 7월 28일
0

Python

목록 보기
3/4

import numpy as np
type(np.array) = ndarray = n-dimensional array

np.zeros((2, 2)) : 2x2 matrix, all elements = 0
np.ones((2, 2)) : 2x2 matrix, all elements = 1
np.full((2, 2), 1.2) : 2x2 matrix, all elements = 1.2
np.eye(3) : 3x3 identity matrix
np.tri(3) : 3x3 matrix, filled with 1 in triangle shape.
np.empty((3, 3)) : 빠르게 배열생성 but 초기화없이 메모리상의 아무 값이나 들어감
np.zeros_like(a) : a 배열과 같은 모양으로 zeros array를 만들어 달라
np.ones_like(a)
np.full_like(a, 5)

np.arange(start, end, step)
np.linspace(0, 1, 5) : 0 부터 1사이를 균둥하게 5 등분
np.logspace(0, 1, 5) : log 값으로 균등하게

np.random.random((3, 3)) : 랜덤값으로 3x3 matrix 생성
np.random.randint(0, 10, (3, 3)) : 0에서 10 사이 값으로
np.random.normal(0, 10, (3, 3)) : 정규분포값
np.random.rand(3, 3) : 균등분포값 3x3 matrix
np.random.randn(3, 3) : 표준정규분포값 3x3 matrix
np.eye(3, dtype=int), int로 된 matrix, int 대신 float, bool 등등 여러가지 사용가능

date = np.array('2020-01-01', dtype=np.datetime64)
-> array('2020-01-01', dtype='datetime64[D]')
date + np.arange(12)
-> array(['2020-01-01', '2020-01-02', '2020-01-03', '2020-01-04',
'2020-01-05', '2020-01-06', '2020-01-07', '2020-01-08',
'2020-01-09', '2020-01-10', '2020-01-11', '2020-01-12'],
dtype='datetime64[D]')

def array_info(array):
  print(array)
  print('ndim: ', array.ndim) # dimension
  print('shape: ', array.shape)
  print('dtype: ', array.dtype)
  print('size: ', array.size) # total elements 갯수
  print('itemsize: ', array.itemsize) # single element bytes
  print('nbytes: ', array.nbytes) # total elements bytes
  print('strides: ', array.strides) # 다음 차원으로 넘어가기 위해 필요한 bytes
  
array_info(a2)
-> 
[[1 2 3]
 [4 5 6]
 [7 8 9]]
ndim:  2
shape:  (3, 3)
dtype:  int64
size:  9
itemsize:  8
nbytes:  72
strides:  (24, 8)

-------boolean indexing------

a1 = [7, 2, 3, 4, 5]
b1 = [False, True, True, False, True]
print(a1[b1])
-> [2 3 5] # true 만 가져옴

np.insert(array, index, number) : 지정 위치(index)에 지정 값(number) 삽입, 원본 array 변경 X
np.insert(a2, 0, 100, axis=1) : 2차원이상은 값을 입력 할 axis 지정
np.delete(a1, 2)
np.delete(a2, 1, axis=1)

profile
초심자

0개의 댓글