NumPy 기초

4359 단어 python
NumPy 는 N 차원 배열 대상 클래스 ndarray 를 제공 합 니 다.Scipy 와 Scikit - learn 등의 데이터 구조 로 빠 른 선형 대수 계산 을 지원 합 니 다.
배열 만 들 기
list 에서 1 차원 배열 까지
import numpy as np
list_of_ints = [1, 2, 3]
array_1 = np.array(list_of_ints)
array_1
Out[22]: 
array([1, 2, 3])
type(array_1)
Out[23]: 
numpy.ndarray
array_1.dtype
Out[24]: 
dtype('int64')
데이터 형식 을 지정 하여 메모리 크기 를 제어 합 니 다.
array_1.nbytes
Out[30]: 
24
array_1 = np.array(list_of_ints, dtype='int8')
array_1.nbytes
Out[32]: 
3
array_1b = array_1.astype('float32')
array_1b
Out[34]: 
array([ 1.,  2.,  3.], dtype=float32)
array_1b.nbytes
Out[35]: 
12

이 구 목록 (데이터 형식 이 다 름)
정밀도 가 높 은 타 입
import numpy as np
complex_list = [1,2,3] + [1.1,2.2,3.3] + ['a','b','c']
array_2 = np.array(complex_list[:3])
print(array_2.dtype)
int64
array_2 = np.array(complex_list[:6])
print(array_2.dtype)
float64
array_2 = np.array(complex_list)
print(array_2.dtype)
|S32

2 차원 배열
import numpy as np
a_list_of_lists = [[1,2,3], [4,5,6], [7,8,9]]
array_2d = np.array(a_list_of_lists)
array_2d
Out[43]: 
array([[1, 2, 3],
       [4, 5, 6],
       [7, 8, 9]])
배열 의 크기 를 변경 합 니 다 reshape (), resize () 와 shape
array_2d_1 = array_2d.reshape(1,9).copy()
array_2d_1
Out[46]: 
array([[1, 2, 3, 4, 5, 6, 7, 8, 9]])
NumPy 함수 로 배열 생산
import numpy as np
ordinal_values = np.arange(9).reshape(3,3)
ordinal_values
Out[49]: 
array([[0, 1, 2],
       [3, 4, 5],
       [6, 7, 8]])
np.arange(9)[::-1]
Out[51]: 
array([8, 7, 6, 5, 4, 3, 2, 1, 0])
np.arange(9)[:-1]
Out[52]: 
array([0, 1, 2, 3, 4, 5, 6, 7])
np.zeros((3,3))
Out[53]: 
array([[ 0.,  0.,  0.],
       [ 0.,  0.,  0.],
       [ 0.,  0.,  0.]])
np.ones((3,3))
Out[54]: 
array([[ 1.,  1.,  1.],
       [ 1.,  1.,  1.],
       [ 1.,  1.,  1.]])
np.eye(3)
Out[55]: 
array([[ 1.,  0.,  0.],
       [ 0.,  1.,  0.],
       [ 0.,  0.,  1.]])
np.linspace(start=0, stop=1, num=10)
Out[56]: 
array([ 0.        ,  0.11111111,  0.22222222,  0.33333333,  0.44444444,
        0.55555556,  0.66666667,  0.77777778,  0.88888889,  1.        ])
growth = np.logspace(start=0, stop=1, num=10, base=10.0)
growth
Out[58]: 
array([  1.        ,   1.29154967,   1.66810054,   2.15443469,
         2.7825594 ,   3.59381366,   4.64158883,   5.9948425 ,
         7.74263683,  10.        ])
np.random.normal(size=(3,3))
Out[59]: 
array([[ 1.35884452,  0.40577809,  1.63872935],
       [-2.36304665,  0.35944907,  0.58849736],
       [ 1.1812921 ,  1.12403039,  0.07716541]])

np.random.normal(loc=1.0, scale=3.0, size=(3,3))
Out[61]: 
array([[ 4.72521417,  4.08956132,  0.53066751],
       [ 1.23055934, -1.30784141, -2.92347621],
       [ 2.43437376,  0.54167036,  3.13887534]])
np.random.uniform(low=0.0, high=1.0, size=(3,3))
Out[62]: 
array([[ 0.99686131,  0.44151759,  0.19651618],
       [ 0.56318673,  0.1481807 ,  0.35430769],
       [ 0.76847528,  0.76751349,  0.09021368]])
파일 에서 데 이 터 를 불 러 와 배열 을 생 성 합 니 다.
np.loadtxt('',delimiter=',',dtype=float)
pandas 에서 데이터 가 져 오기
df.values
Numpy 계산
import numpy as np
a = np.arange(5).reshape(1,5)
a += 1
a*a
Out[66]: 
array([[ 1,  4,  9, 16, 25]])
array([[ 1,  4,  9, 16, 25]])
import numpy as np
a = np.arange(5).reshape(1,5) + 1
b = np.arange(5).reshape(5,1) + 1
a*b
Out[67]: 
array([[ 1,  2,  3,  4,  5],
       [ 2,  4,  6,  8, 10],
       [ 3,  6,  9, 12, 15],
       [ 4,  8, 12, 16, 20],
       [ 5, 10, 15, 20, 25]])
import math
%timeit -n 1 -r 3 [math .sqrt(i) for i in range(10**6)]
1 loop, best of 3: 146 ms per loop
%timeit -n 1 -r 3 np.sqrt(np.arange(10**6))
1 loop, best of 3: 5.73 ms per loop
매트릭스 연산
import numpy as np
M = np.arange(5*5, dtype=float).reshape(5,5)
coefs = np.array([1., 0.5, 0.5, 0.5, 0.5])
coefs_matrix = np.column_stack((coefs, coefs[::-1]))
print("M --- ")
print(M)
print("coefs")
print(coefs)
print("dot")
np.dot(M,coefs)
M --- 
[[  0.   1.   2.   3.   4.]
 [  5.   6.   7.   8.   9.]
 [ 10.  11.  12.  13.  14.]
 [ 15.  16.  17.  18.  19.]
 [ 20.  21.  22.  23.  24.]]
coefs
[ 1.   0.5  0.5  0.5  0.5]
dot
Out[80]: 
array([  5.,  20.,  35.,  50.,  65.])

좋은 웹페이지 즐겨찾기