신입 AI개발자가 준비하는 30가지 Numpy 면접 기초 개념

shooting star·2023년 5월 3일
2

면접 준비

목록 보기
2/6

1. Numpy란 무엇이고, 어떤 목적으로 사용되나요?

Numpy는 Numerical Python의 약자로, 고성능의 수치 계산을 위한 Python 라이브러리입니다. Numpy는 다차원 배열 객체와 배열을 처리하는 다양한 함수를 제공하며, 수학적 계산, 통계, 선형 대수 등의 작업을 빠르게 수행할 수 있도록 지원합니다.

2. Numpy 배열과 Python의 리스트의 차이점은 무엇인가요?

Numpy 배열은 고정된 크기를 가지며, 동일한 데이터 타입을 사용해야 합니다. 이로 인해 Numpy 배열은 메모리 효율성과 연산 속도 측면에서 Python 리스트보다 뛰어납니다. Python 리스트는 크기가 가변적이며 다양한 데이터 타입을 포함할 수 있지만, 이로 인해 연산 속도가 느리고 메모리 사용량이 많습니다.

3. Numpy에서 배열을 생성하는 다양한 방법은 무엇인가요?

Numpy 배열은 np.array(), np.zeros(), np.ones(), np.arange(), np.linspace(), np.logspace(), np.eye(), np.random.rand() 등의 함수를 사용하여 생성할 수 있습니다.

4. Numpy에서 배열의 차원과 형태(shape)를 확인하고 변경하는 방법은 무엇인가요?

배열의 차원은 배열.ndim 속성으로, 형태는 배열.shape 속성으로 확인할 수 있습니다. 배열의 형태를 변경하려면 배열.reshape() 함수를 사용하거나 배열.shape 속성에 새로운 형태를 할당할 수 있습니다.

5. Numpy에서 배열의 데이터 타입을 확인하고 변경하는 방법은 무엇인가요?

배열의 데이터 타입은 배열.dtype 속성으로 확인할 수 있습니다. 데이터 타입을 변경하려면 배열.astype() 함수를 사용하여 새로운 데이터 타입을 명시합니다.
6. Numpy에서 배열의 인덱싱과 슬라이싱 방법은 무엇인가요?
Numpy 배열은 기본적으로 Python 리스트와 같은 방식으로 인덱싱과 슬라이싱을 수행할 수 있습니다. 인덱싱은 배열[인덱스] 형태로, 슬라이싱은 배열[시작:끝:간격] 형태로 사용합니다. 다차원 배열의 경우 인덱싱과 슬라이싱을 콤마(,)로 구분하여 각 축(axis)에 대해 수행할 수 있습니다.

7. Numpy에서 배열을 재구조화(reshape)하는 방법은 무엇인가요?

배열을 재구조화하려면 배열.reshape() 함수를 사용하고, 새로운 형태를 인자로 전달합니다. 이때 새로운 형태의 원소 개수는 원래 배열의 원소 개수와 일치해야 합니다. 예를 들어, (3, 4) 형태의 배열을 (2, 6) 형태로 변경할 수 있습니다.

8. Numpy에서 브로드캐스팅이란 무엇이고 어떤 상황에서 사용되나요?

브로드캐스팅은 Numpy에서 다른 형태의 배열 간에도 산술 연산을 수행할 수 있게 해주는 기능입니다. 브로드캐스팅은 두 배열의 형태를 비교하고, 각 축(axis)의 길이가 같거나 1인 경우 연산이 가능하게 합니다. 브로드캐스팅은 배열과 스칼라 간의 연산 뿐만 아니라, 서로 다른 형태의 배열 간 연산에도 사용됩니다.

9. Numpy에서 기본적인 배열 연산(덧셈, 뺄셈, 곱셈, 나눗셈)을 수행하는 방법은 무엇인가요?

Numpy 배열 간의 기본적인 산술 연산은 +, -, *, / 연산자를 사용하거나 np.add(), np.subtract(), np.multiply(), np.divide() 함수를 사용하여 수행할 수 있습니다. 이 연산들은 요소별(element-wise)로 수행되며, 브로드캐스팅 규칙이 적용됩니다.

10. Numpy에서 행렬 곱셈을 수행하는 방법은 무엇인가요?

Numpy에서 행렬 곱셈은 '@' 연산자를 사용하거나 np.dot() 함수를 사용하여 수행할 수 있습니다. 이외에도 np.matmul() 함수를 사용하여 행렬 곱셈을 수행할 수 있습니다.

11. Numpy에서 행렬의 전치(transpose)를 수행하는 방법은 무엇인가요?

Numpy에서 행렬의 전치를 수행하려면 배열.T 속성을 사용하거나 np.transpose() 함수를 사용할 수 있습니다.

12. Numpy에서 역행렬과 유사 역행렬을 계산하는 방법은 무엇인가요?

Numpy에서 역행렬을 계산하려면 np.linalg.inv() 함수를 사용하며, 유사 역행렬을 계산하려면 np.linalg.pinv() 함수를 사용합니다.

13. Numpy에서 선형 방정식의 해를 구하는 방법은 무엇인가요?

Numpy에서 선형 방정식의 해를 구하려면 np.linalg.solve() 함수를 사용합니다. 이 함수는 행렬 A와 벡터 b를 입력으로 받아서 Ax = b 형태의 선형

14. Numpy에서 난수를 생성하는 방법은 무엇인가요?

Numpy에서 난수를 생성하려면 np.random 모듈을 사용합니다. 주요 함수로는 np.random.rand(), np.random.randn(), np.random.randint(), np.random.choice(), np.random.seed() 등이 있습니다.

15. Numpy에서 정렬, 최솟값, 최댓값, 중앙값을 구하는 방법은 무엇인가요?

Numpy에서 배열을 정렬하려면 np.sort() 함수를 사용하며, 최솟값을 구하려면 np.min() 함수, 최댓값을 구하려면 np.max() 함수를 사용합니다. 중앙값을 구하려면 np.median() 함수를 사용합니다.

16. Numpy에서 배열에 조건을 적용하여 필터링하는 방법은 무엇인가요?

Numpy에서 배열에 조건을 적용하여 필터링하려면 불리언 인덱싱(Boolean indexing)을 사용합니다. 배열에 조건을 적용하면 True/False 값을 가지는 불리언 배열이 생성되고, 이를 사용하여 원하는 요소만을 추출할 수 있습니다.

17. Numpy에서 배열 요소들의 합, 평균, 분산, 표준편차를 구하는 방법은 무엇인가요?

Numpy에서 배열 요소들의 합을 구하려면 np.sum() 함수, 평균을 구하려면 np.mean() 함수, 분산을 구하려면 np.var() 함수, 표준편차를 구하려면 np.std() 함수를 사용합니다.

18. Numpy에서 누적합과 누적곱을 계산하는 방법은 무엇인가요?

Numpy에서 누적합을 계산하려면 np.cumsum() 함수, 누적곱을 계산하려면 np.cumprod() 함수를 사용합니다.

19. Numpy에서 배열을 결합하거나 분할하는 방법은 무엇인가요?

Numpy에서 배열을 결합하려면 np.concatenate(), np.vstack(), np.hstack() 등의 함수를 사용하며, 배열을 분할하려면 np.split(), np.vsplit(), np.hsplit() 등의 함수를 사용합니다.

20. Numpy에서 축(axis)의 개념은 무엇인가요?

축(axis)은 Numpy 배열의 각 차원을 나타내는 개념입니다. 축은 0부터 시작하는 정수로 표현되며, 다차원 배열에서 각 차원에 따라 연산이 수행되는 방향을 결정합니다. 예를 들어, 2차원 배열에서 axis=0은 행(row) 방향, axis=1은 열(column) 방향을 나타냅니다.

21. Numpy에서 벡터와 스칼라의 개념은 무엇인가요?

Numpy에서 벡터는 1차원 배열로, 여러 개의 숫자 값을 가진 객체입니다. 벡터는 공간에서 방향과 크기를 가진 객체로 해석될 수 있으며, 수학적 연산에 사용됩니다. 스칼라는 단일 숫자 값으로, 크기만을 가지며 방향이 없습니다. 스칼라는 배열과 함께 산술 연산에 사용될 수 있습니다.
0차원: 스칼라(Scalar) - 하나의 숫자 값으로 구성된 데이터입니다.
1차원: 벡터(Vector) - 숫자 값의 시퀀스로 구성된 데이터입니다.
2차원: 행렬(Matrix) - 행과 열로 구성된 숫자 값의 격자입니다.
다차원: 텐서(Tensor) - 3차원 이상의 차원을 가진 배열로, 다양한 형태의 데이터 구조를 나타낼 수 있습니다.

22. Numpy에서 아이겐벡터와 아이겐밸류를 계산하는 방법은 무엇인가요?

Numpy에서 아이겐벡터와 아이겐밸류를 계산하려면 np.linalg.eig() 함수를 사용합니다. 이 함수는 정방행렬을 입력으로 받아서 해당 행렬의 아이겐밸류와 아이겐벡터를 반환합니다.

23. Numpy에서 그리드 데이터를 생성하는 방법은 무엇인가요?

Numpy에서 그리드 데이터를 생성하려면 np.meshgrid() 함수를 사용합니다. 이 함수는 주어진 벡터들로부터 좌표 격자를 생성해줍니다. 격자 데이터는 표면 플롯(surface plot) 등의 시각화에 사용됩니다.

24. Numpy에서 유니버설 함수란 무엇이고, 어떤 기능을 제공하나요?

Numpy의 유니버설 함수는 벡터화된 연산을 수행하는 함수로, 입력 배열에 대해 요소별로 연산을 빠르게 수행할 수 있습니다. 유니버설 함수는 기본적인 산술 연산, 비교 연산, 비트 연산 등 다양한 종류의 연산을 제공합니다. 예를 들어, np.add(), np.subtract(), np.sin(), np.log() 등이 유니버설 함수입니다.

25. Numpy에서 펜시 인덱싱이란 무엇이고 언제 사용하는가?

펜시 인덱싱은 Numpy에서 배열의 일부를 추출하거나 변경할 때 사용하는 인덱싱 방식입니다. 펜시 인덱싱은 정수 배열이나 불리언 배열을 인덱스로 사용하여 원하는 요소를 선택할 수 있습니다. 펜시 인덱싱은 복잡한 배열 구조를 생성하거나 특정 패턴에 따라 배열 요소를 추출하거나 변경할 때 유용하게 사용됩니다.

26. Numpy에서 메모리 사용량을 최적화하는 방법은 무엇인가요?

Numpy에서 메모리 사용량을 최적화하기 위해서는 다음과 같은 방법들을 사용할 수 있습니다:
데이터 타입을 최적화하여 사용하십시오. 예를 들어, float64 대신 float32를 사용하면 메모리 사용량을 절반으로 줄일 수 있습니다.
필요한 경우 배열의 형태를 변경하여 메모리를 절약하십시오.
배열의 뷰를 사용하여 원래 데이터를 복사하지 않고 배열 조작을 수행하십시오. 이렇게 하면 메모리 사용량이 줄어듭니다.
np.empty() 함수를 사용하여 미리 할당된 메모리 공간을 재사용하십시오. 이렇게 하면 새로운 메모리를 할당하지 않고도 배열을 생성할 수 있습니다.

27. Numpy에서 배열 슬라이싱을 사용할 때 주의해야 할 점은 무엇인가요?

Numpy에서 배열 슬라이싱을 사용할 때 주의해야 할 점은 슬라이싱된 배열이 원본 배열의 뷰(view)를 반환한다는 것입니다. 따라서 슬라이싱된 배열을 수정하면 원본 배열도 변경됩니다. 원본 배열을 유지하고 싶다면, 슬라이싱된 배열의 복사본을 만들어 사용해야 합니다. 이를 위해 np.copy() 함수를 사용할 수 있습니다.

28. Numpy에서 히스토그램을 계산하는 방법은 무엇인가요?

Numpy에서 히스토그램을 계산하려면 np.histogram() 함수를 사용합니다. 이 함수는 데이터와 구간(bin)을 입력으로 받아서 데이터의 히스토그램을 계산해줍니다. 구간의 개수나 범위를 지정할 수 있으며, 반환되는 결과는 각 구간에 속하는 데이터 개수와 구간의 경계값입니다.

29. Numpy에서 배열의 원소를 반복하거나 순회하는 방법은 무엇인가요?

Numpy에서 배열의 원소를 반복하거나 순회하는 방법은 다양합니다. 가장 간단한 방법은 for 문을 사용하여 배열의 원소를 순회하는 것입니다. 이외에도 np.nditer() 함수를 사용하여 다차원 배열의 원소를 효율적으로 순회할 수 있습니다.

30. Numpy에서 배열의 모양을 바꾸거나 차원을 추가/제거하는 방법은 무엇인가요?

Numpy에서 배열의 모양을 바꾸려면 np.reshape() 함수를 사용하거나 배열의 'shape' 속성을 변경합니다. 차원을 추가하려면 np.newaxis를 사용하거나 np.expand_dims() 함수를 사용합니다. 차원을 제거하려면 np.squeeze() 함수를 사용하거나 'shape' 속성을 변경하여 특정 차원의 크기를 1로 설정합니다.

0개의 댓글