Q. np.show_config() 함수는 무엇인가?
np.show_config()은 numpy 라이브러리의 설정 정보를 출력하는 함수이다.
numpy가 내부적으로 어떤 컴파일러와 라이브러리를 사용하고 있는지, BLAS / LAPACK 라이브러리가 어떤 것이 연결되어 있는지 등의 정보를 제공한다.
이 함수를 호출하면 numpy가 어떻게 빌드되었는지에 대한 세부 정보를 볼 수 있다. 이는 성능 최적화나 디버깅에 사용될 수 있다.
예를 들어, numpy가 어떤 C 컴파일러를 사용하여 빌드되었는지, 어떤 수학 라이브러리를 사용하고 있는지 등을 확인할 수 있다. 이러한 정보는 numpy 연산 성능에 영향을 미칠 수 있기 때문에, numpy의 성능 문제를 진단하는 데 도움이 될 수 있다.
Q. null 벡터란?
numpy에서 'null 벡터'라는 용어는 보통 모든 원소가 0인 벡터를 가리킨다.
모든 원소가 0인 벡터는 np.zeros라는 함수를 통해 배열을 생성한다.
반면에 np.empty 함수가 만드는 배열은 'null 벡터'가 아니다.
np.empty 함수는 초기화되지 않은 배열을 만들기 때문이다. 이 함수로 생성된 배열은 메모리 상태에 따라 임의의 값들을 가질 수 있다. 이 값들을 '쓰레기 값'이라고 부르며, 이전에 메모리에 저장되어 있던 무작위의 값들일 수 있다.
Q. 배열 생성 및 초기화 하는 함수 list
1. zeros() : 모든 요소를 0으로 초기화
- 주어진 형태와 타입을 갖는 0으로 채워진 배열을 반환
- zeros(shape, dtype = float, order = 'C')
- 지정된 shape의 배열을 생성하고, 모든 요소를 0으로 초기화
2. ones() : 모든 요소를 1로 초기화
- 주어진 형태와 타입을 갖는 1로 채워진 배열을 반환
- np.ones(shape, dtype = None, order = 'C')
- 지정된 shape의 배열을 생성하고, 모든 요소를 1로 초기화
3. full() : 모든 요소를 지정한 값으로 초기화
- np.full(shape, fill_value, dtype = None, order = 'C')
- 지정된 shape의 배열을 생성하고, 모든 요소를 지정한 'fill_value'로 초기화
4. eye() : identity matrix ( 단위 행렬(주 대각 성분이 모두 1이고 나머지 성분은 모두 0인 정사각 행렬) ) 생성
- np.eye(N, M = None, k = 0, dtype = < class 'float' >)
- (N, N) shape의 단위 행렬을 생성
5. tri() : 삼각 행렬 생성
6. empty() : 초기화되지 않은 배열 생성
- 초기화가 없어서 배열 생성비용 저렴하고 빠르다.
- 초기화되지 않아서 기존 메모리 위치에 존재하는 값이 있음
7. _like(): 지정된 배열과 shape가 같은 행렬 생성
- np.zeros_like()
- np.ones_like()
- np.full_like()
- np.empty_like()
Q. 배열 조회
def array_info(array):
print(array)
print("ndim:", array.ndim) # 배열 차원 수 또는 배열 축의 수
print("shape:", array.shape) # 배열 각 차원의 크기를 튜플 형태로 표현
print("dtype:", array.dtype) # 배열 내 원소의 데이터 형
print("size:", array.size) # 배열 원소의 개수
print("itemsize:", array.itemsize) # 배열 내 원소의 크기를 바이트 단위로 기술
print("nbytes:", array.nbytes) # 배열 전체 바이트 (size*itemsize)
print("strides:", array.strides) # 각 차원에서 한 요소에서 다른 요소로 넘어가는 데 필요한 바이트 수
Q. numpy.info란?
np.info(object = None, maxwidth = 76, output = None, toplevel = 'numpy')
- 함수, 클래스 또는 모듈에 대한 도움말 정보를 가져온다. NumPy의 모든 API는 np.info 함수를 이용하여 도움말을 확인할 수 있다.
Parameters
- object
정보를 얻도가 하는 개체나 이름 입력. object가 numpy 객체인 경우 해당 문서 문자열이 제공된다. 문자열인 경우 사용 가능한 모듈에서 일치하는 개체를 검색한다. None인 경우 info 자체에 대한 정보가 반환된다.
- maxwidth, optional
Printing width
- 객체와 같은 출력 파일, 선택 사항
출력이 기록되는 객체와 같은 파일이다. 기본값이 None이며, 이 경우 sys.stdout가 사용된다. 개체는 'w' 또는 'a'모드로 열려야 한다.
- toplevel, optional
Q. Python help()란?
help() : 함수, 메서드, 클래스 사용법에 대한 도움말을 아웃풋으로 출력하는 함수
- 인터넷 검색을 하지 않더라도, 파이썬 IDE 내부에서 help() 함수를 사용하여 특정 모듈의 함수, 또는 객체(인스턴스)에 사용할 수 있는 메서드에 대한 도움말과 사용법을 조회할 수 있다.
- help()의 사용 방법
- 파이썬의 모듈A가 가진 함수a에 대한 도움말 출력
help(모듈 A.함수 a)
- 파이썬의 인스턴스B의 클래스가 사용 가능한 메서드b의 도움말 출력
help(인스턴스B.메서드b)
- 파이썬의 모듈C가 가진 클래스c에 대한 도움말 출력
help(모듈C.클래스c)
Q. 생성한 값으로 배열 생성
1. arange() : 정수 범위로 배열 생성
- numpy.arange(start, stop, step, dtype = None)
- start에서 stop미만까지 step간격으로 데이터 생성한 후 배열 생성
- 범위 내에서 간격을 기준 균등 간격의 배열
- 요소의 개수가 아닌 데이터의 간격을 기준으로 배열 생성
2. linspace() : 범위 내에서 균등 간격의 배열 생성
- numpy.linspace(start, stop, num = 50, endpoint = True, retstep = False, dtype = None)
- start에서 stop의 범위에서 num개를 균일한 간격으로 데이터를 생성하고 배열을 만드는 함수
- 요소 개수를 기준으로 균등 간격의 배열을 생성
3. logspace() : 범위 내에서 균등 간격으로 로그 스케일로 배열 생성
- numpy.logspace(start, stop, num = 50, endpoint = True, base = 10.0, dtype = None)
- 로그 스케일의 linspace 함수
- 로그 스케일로 지정된 범위에서 num 개수만큼 균등 간격으로 데이터를 생성한 후 배열 생성
- 10의 승수로 표현 -> 로그스케일로 배열을 생성해야하기 때문
Q. 배열의 슬라이싱
- 여러 개의 배열 요소를 참조할 때 사용
- axis별로 범위를 지정하여 실행한다.
- from_index : to_index 형태로 지정한다. from_index는 범위의 시작 인덱스이며, to_index는 범위의 종료 인덱스이다. 요소 범위를 지정할 때 to_index는 결과에 포함되지 않는다.
- from_index는 생략 가능하다. 생략할 경우 0을 지정한 것으로 간주된다.
- to_index 역시 생략 가능하다. 이 경우 마지막 인덱스로 설정된다.
- 따라서 ' : ' 형태로 지정된 범위는 전체 범위를 의미한다
- from_index와 to_index에 음수를 지정하면 반대방향을 의미한다.
Q. resize함수와 reshape함수
- 배열의 shape을 변경한다는 부분에서 유사하다
- reshape 함수는 배열 요소 수를 변경하지 않기 때문에 reshape 전후 배열 요소 수는 같다.
- 반면에 resize는 shape를 변경하는 과정에서 배열 요소 수를 줄이거나 늘린다.
1. np.resize
- np.resize(a, new_shape)
- np.ndarray.resize(new_shape, refcheck = True)
- 배열의 shape와 크기를 변경한다.
- 요소 수가 더 많은 경우
- 새 배열의 요소 수가 더 많은 경우
원래 가지고 있는 배열의 데이터는 반복되지만, 오류는 발생하지 않는다.
- 새 배열의 요소 수가 더 적은 경우
새 배열을 채우는 데 필요한 요소 수를 행 순서대로 가져온다.
resize()함수는 원래 배열과 동일한 메모리를 공유하지 않기 때문에 한 배열의 데이터 변경은 다른 배열에 매핑되지 않는다.
2. np.reshape()
- numpy.ndarray 객체의 shape를 변경한다.
- 데이터의 개수와 형태의 크기는 같아야 한다.
- reshape() 함수에서 변환된 배열은 원래 배열과 동일한 메모리를 공유하기에 한 배열에서 데이터를 변경하면 다른 배열의 데이터 도 수정된다.
- ndarray가 아닌 다른 자료(list, tuple, range)를 바로 reshape하면 오류가 표시된다. 이런 경우에는 np.array() 함수를 이용하여 numpy.ndarray로 바꾸어 reshape할 수 있다.
Q. np.where()
- 조건 만족 인덱스 반환
- 1차원일때는 해당 인덱스 번호에서 몇 번째 위치가 조건을 만족하는지 반환한다.
- 2차원 이상이면 axis를 기준으로 인덱스 번호를 가져온다.
- 두번째 인자에 True일 때 값, 세번째 인자에 False일 때 값을 써주면 broadcasting이 가능하다.
np.where(a>10, a, 10) # a가 10보다 크면 그대로, 그렇지 않으면 10으로 설정
Q. np.nonzero()
- 0이 아닌 값들의 index를 반환해 주는 함수
- 2차원일때는 행과 열 각각의 인덱스를 반환하는 2개의 array로 구성된 튜플이 반환되는 것을 볼 수 있다.
- 이 결과를 쉽게 보려면 주어진 것을 transpose 시켜주면 된다.
1, 2, 3, 4, 5
6, , , 7, 8
, , 9,10,11
[ 이수안 컴퓨터 연구소 ] NUMPY 한번에 제대로 배우기 (0) | 2024.02.28 |
---|---|
NUMPY 기초 문법 정리6_배열 입출력 (0) | 2024.01.21 |
NUMPY 기초 문법 정리5_배열 연산 (0) | 2024.01.19 |
NUMPY 기초 문법 정리4_배열 변환 (0) | 2024.01.19 |
NUMPY 기초 문법 정리3_배열 값 삽입/수정/삭제/복사 (0) | 2024.01.19 |