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
배열은 리스트와 비슷하지만 다음과 같은 점에서 다르다.
파이썬은 자체적으로 배열 자료형을 제공하지 않는다. 따라서 배열을 구현한 다른 패키지를 임포트해야 한다. 파이썬에서 배열을 사용하기 위한 표준 패키지는 넘파이(NumPy)다.
C,C++,포트란 등의 언어와 통합가능
:https://m.blog.naver.com/choi_s_h/221730568009
x=np.linspace(start, stop, num)
시작값, 끝값, num은 몇개의 일정한 간격으로 요소를 만들것인지.
: 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)
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)
numpy에서는 1차원 이상의 배열부터 행렬이라고 하며, 행렬을 활용한 연산이 가능하다. (O)
arr[-3]처럼, 인덱스에 -n이 붙으면 뒤에서 n번째를 표현하는 것이다. (O)
np.linspace(1,10)에서 나오는 벡터의 간격은 np.linspace(11,20,50)의 벡터의 간격과 동일하다. (O)
: num의 디폴트값은 50
</aside>
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>