numpy

Numpy는 컴파일 정적 성격을 가지고 있다.
list보다 빠르게 동작하지만, 동일한 타입의 객체만 저장할 수 있으며
크기를 변경할 수 없다.
import numpy as np
np.zeros(5, float)
np.zeros([2, 3], float)
np.empty(4, float)
np.ones([2, 3], float)
r=[1.0, 1.5, -2.2]
np.array(r, float) # Python list np.array
numpy는 연산자 오버로딩으로 tuple, list 등 python 연산자에 대해서 호환성을 제공함
r=[1.0, 1.5, -2.2]
a=np.array(r, float)
a[0, 1] # Python list (TypeError)
a[0][1] #
파일 읽기
np.loadtxt는 직접 타입을 지정해서 메모리에 데이터를 올릴 수 있다.
data=np.loadtxt("stars.txt", float)
연산
a=array([1, 2, 3, 4], float)
b=array([2, 3, 4, 5], float)
a+b #
a-b
a*b
a/b
np.dot(a, b) #
from math import sqrt
b=array(list(map(sqrt, a)), float)
size, shape 멤버
size는 element 개수,
shape은 dimension 출력
a.size
a.shape
immutable
array는 list와 동일하게 할당했을 때, 새로운 array를 할당하지 않는다.
단순히 주소를 복사함(얕은 복사)

복사를 하고 싶은 경우, np.copy를 이용할 것
( list에서는 list 클래스의 copy 메서드를 사용해서 복사, tmplist.copy() )
import numpy as np
a=np.array([1, 1], int)
b=a
a[0]=2
print(a)
print(b)
b=np.copy(a)
a[0]=1
print(a)
print(b)
Slice in array
a=np.array([2, 4, 6, 8, 10, 12, 14, 16], int)
b=a[3:6] # index 3, 4, 5
c=a[:] #
print(b)
print(c)
np.arange(1, 8, 2) # similar with range(1, 8, 2)
np.linspace(2.0, 8.0, 5) # 5 , 5