https://colab.research.google.com/drive/1TKCIeJqSjRVq3lsV-DbI1vWyj-pEXlow#scrollTo=NiHwHfHf-UpF

<aside> 💡 1. python 리스트는 다양한 데이터 유형을 포함할 수 있지만, numpy 배열의 모든 요소는 동일 유형이어야 한다. (O)

: https://datascienceschool.net/01 python/03.01 넘파이 배열.html

배열은 리스트와 비슷하지만 다음과 같은 점에서 다르다.

  1. 모든 원소가 같은 자료형이어야 한다.
  2. 원소의 갯수를 바꿀 수 없다.

파이썬은 자체적으로 배열 자료형을 제공하지 않는다. 따라서 배열을 구현한 다른 패키지를 임포트해야 한다. 파이썬에서 배열을 사용하기 위한 표준 패키지는 넘파이(NumPy)다.

  1. numpy는 C언어와 통합이 불가능하다. (X) : https://n-brogrammer.tistory.com/42

C,C++,포트란 등의 언어와 통합가능

  1. np.linspace(1, 11, 10)의 결과는 array([1., 2., 3., 4., 5., 6., 7., 8., 9., 10.]) 이다. (X)

:https://m.blog.naver.com/choi_s_h/221730568009

x=np.linspace(start, stop, num)

시작값, 끝값, num은 몇개의 일정한 간격으로 요소를 만들것인지.

Untitled

Untitled

  1. numpy의 경우 파이썬과 다르게 배열을 생성하고 a = [1,2,3,4]를 넣으면 배열에 1,2,3,4 각각의 주소가 저장된다. (X)

: Python의 리스트(list)는 각 요소의 메모리 주소가 연속적으로 저장되는 것이 아니라, 각 요소가 다른 객체를 참조하는 방식으로 데이터가 저장됩니다. 즉, Python의 리스트는 포인터들의 배열로 구현되어 있으며, 각 요소가 실제 데이터를 저장하는 것이 아니라 실제 데이터를 가리키는 포인터를 저장합니다.

NumPy 배열은 Python 리스트와 다른 방식으로 데이터를 저장하며, NumPy 배열의 각 요소는 동일한 데이터 타입을 가져야 합니다. 따라서 NumPy 배열은 데이터를 저장할 때 Python 리스트와는 다른 방식을 사용합니다.

NumPy 배열을 생성할 때는, 배열의 shape와 데이터 타입(dtype)을 지정하며 데이터를 저장합니다. 예를 들어, **np.array([1,2,3,4])**와 같은 방식으로 NumPy 배열을 생성하면, 배열의 shape는 (4,)이고 dtype은 int32와 같은 default 데이터 타입으로 지정됩니다. 이후 데이터는 연속적인 메모리 블록에 저장됩니다.

따라서 NumPy 배열의 각 요소는 메모리에서 연속된 위치에 저장되며, 각 요소에 대한 포인터를 따로 저장하지 않습니다. 따라서 Python 리스트와는 다르게, NumPy 배열의 요소는 메모리 상에서 연속된 위치에 저장되며, 각 요소는 자신의 인덱스를 사용하여 접근합니다.

a = np.array([ [1, 2, 3, 4, 5], [11, 12, 13, 14, 15], [21, 22, 23, 24, 25]]) print(a[::2, ::2]) 의 결과값은 [[ 1 3 5] [21 23 25]] 이다. (O)

Untitled

  1. numpy에서 array를 합칠 경우 vstack은 행을 붙이고, hstack은 열을 붙인다. (O) : https://jimmy-ai.tistory.com/58

arr1 = np.arrange(15).reshape(1, 2, 5) arr2 = np.arrange(20).reshape(3, 5) 위의 두 배열은 broadcasting이 가능하다. (O)

  1. numpy에서는 1차원 이상의 배열부터 행렬이라고 하며, 행렬을 활용한 연산이 가능하다. (O)

  2. arr[-3]처럼, 인덱스에 -n이 붙으면 뒤에서 n번째를 표현하는 것이다. (O)

  3. np.linspace(1,10)에서 나오는 벡터의 간격은 np.linspace(11,20,50)의 벡터의 간격과 동일하다. (O)

: num의 디폴트값은 50

</aside>

  1. O
  2. X
  3. X
  4. X
  5. O
  6. O
  7. O
  8. O
  9. O
  10. O
1, 2.
아래의 해설에서 틀린 부분을 찾아 고치시오.

import numpy as np
n_arr = np.array(range(5))

1. 위 코드를 통해 생성된 n_arr의 클래스 타입은 numpy이다.

2. 리스트와 다르게 ~~중괄호~~ 대괄호 를 사용한다.

----------------------------------------------------------------

3. numpy.shape을 반환하면 튜플 타입으로 반환된다. (O)

----------------------------------------------------------------

4. numpy는 list와 같이 여러 개의 데이터 type을 사용하여 배열을 만들 수 있다.(X)

----------------------------------------------------------------

5. numpy는 데이터가 C array 형태로 저장되기 때문에 상당히 빠른 속도를 보장한다.(O)
:<https://devocean.sk.com/blog/techBoardDetail.do?ID=163649>

----------------------------------------------------------------

6. 시드값만 같으면 동일한 난수를 생성할 수 있다.(O)
: <https://cosmosproject.tistory.com/444>
seed 가 같으면 동일한 난수가 생성된다
----------------------------------------------------------------

7. arr1 = np.array([1,2.3,3,'32']) print(arr1, arr1.dtype)
다음 코드에서 출력된 데이터의 타입은 Unicode이다. (O)
:NumPy에서 문자열은 기본적으로 Unicode 문자열 타입으로 처리됩니다.
 np.array 함수에 문자열이 포함된 리스트를 전달하면,
 자동으로 유니코드 문자열 타입으로 변환됩니다. 
위 코드에서는 arr1 배열이 정수, 부동소수점, 문자열 데이터가 혼합된 배열이므로, 
가장 범용적인 유니코드 문자열 타입인 U32으로 자동 변환됩니다.
 U32는 최대 32글자까지 저장할 수 있는 Unicode 문자열 타입입니다.

----------------------------------------------------------------

8. 벡터 연산을 통해 구한 값은 기존의 형태로 반환된다. (O)

  import numpy as np 

  arr1 = np.array([[1,2,3],
				           [4,5,6],
				           [7,8,9]])
  arr2 = np.array([[1,1,1],
			             [1,1,1],
			             [1,1,1]])

  print(np.add(arr1,arr2))
>>> [[ 2  3  4]
    [ 5  6  7]
    [ 8 9 10]]

----------------------------------------------------------------

9. numpy에서 연산을 할 때는 크기가 서로 다른 array끼리 연산이 가능하다. (O)
:<https://compmath.korea.ac.kr/appmath/NumpyBasics.html>
이것이 브로드캐스팅.

----------------------------------------------------------------

10. numpy array의 평균값을 구하려면 avg 메소드를 사용하면 된다(O)
:<https://loadtoexcelmaster.tistory.com/entry/Numpy-mean-vs-average-%EC%B0%A8%EC%9D%B4%EC%A0%90>

Untitled

Untitled

  1. O
  2. X
  3. O
  4. O