import numpy as np
test_array=np.array([1,4,5,8], float)
하나의 데이터 type만 배열에 넣을 수 있음
List [1,0.7,0.5] 안됨
한가지 데이터 타입만 들어감
dynamic typing not supported
numpy array
data가 공간에 차례대로 할당되어 붙어있음
차례대로 값이 들어가서 연산이 좋아짐
메모리 위치를 고려해서 같은 위치끼리 더하면 되어서 메모리 접근성이 더 좋음
연산을 할때 메모리 크기가 일정해서 데이터를 저장하는 공간을 잡기도 훨씬 더 효율적임
python list
5~256 까지의 값이 메모리 어딘가에 스택상의 공간에 있음
7,8,9,10을 넣는다면 값 자체가 리스트에 들어가는게 아니라 걔의 주소갑을 리스트에 차례대로 저장하게 됨
리스트 1개 에서 - 주소값 할당 된거 하나더 들어가야지만 원래 값을 찾는 구조
리스트의 변형이 쉬움
test_array=np.array([1,4,5,"8"], float)
tesat_array
# array([1.,4., 5., 8.])
test_matrix = [[1,2,3,4],[1,2,5,8]]
np.array(test_matrix).shape
#(2,4)
np.array(test_matrix).reshape(8,)
#array([1,2,3,4,1,2,5,8])
np.array(test_matrix).reshape(8,).shape
#(8,)
test_matrix=[[[1,2,3,4],[1,2,5,8]],[[1,2,3,4],[1,2,5,8]]]
np.array(test_matrix).flatten()
#array([1,2,3,4,1,2,5,8.......])
test_example = np.array([[],[]],int)
test_example
#array([[1,2,3],
[4,5,6]])
test_example[0][0]
#1
test_example[0,0]
#1
test_example[0][0]=12
test_example
# array([[12,2,3],
[4,5,6]])
test_example[0][0]=5
test_example[0,0]
#5
test_example=np.array([[1,2,5,8],[1,2,5,8],[1,2,5,8],[1,2,5,8]],int)
test_example[:2,:]
#array([[1,2,5,8],
[1,2,5,8]])
test_example=np.array([[1,2,3,4,5],[6,7,8,9,10]],int)
test_example[:,2:]
#array([[3,4,5],
[8,9,10]])
test_example[1,1:3]
#array([[7,8])
test_example[1:3]
#array([[6,7,8,9,10]])