机器学习之numpy库
numpy库概述
numpy库历史
- 1995年,Numeric,Python语言数值计算扩充。
- 2001年,Scipy->Numarray,多维数组运算。
- 2005年,Numeric+Numarray->Numpy。
- 2006年,Numpy脱离Scipy成为独立的项目。
numpy的核心
numpy基础
ndarray数组
import numpy as np
arr= np.ndarray([1, 2, 3 ,4])
print(type(arr))
内存中的ndarray对象
ndarray数组对象的特点
ndarray数组对象的创建
import numpy as np
a = np.array([1, 2, 3, 4, 5, 6])
print(a)
b = np.arange(0, 8, 2)
print(b);
c = np.zeros(5, dtype = "int")
print(c)
d = np.ones(5, dtype = 'int')
print(d)

ndarray对象属性的基本操作
数组的维度
e = np.array([[1,2,3,4],[5,6,7,8]])
print(type(e), e.shape)

元素的类型
import numpy as np
ary = np.array([
[1,2,3,4],
[5,6,7,8]
])
print(ary.shape, ary.size, len(ary))

数组元素的个数
ary1 = np.array([
[1,2,3,4],
[5,6,7,8]
])
print(ary1.shape, ary1.size, len(ary1))

数组元素索引(下标)
import numpy as np
a = np.array([[[1, 2],
[3, 4]],
[[5, 6],
[7, 8]]])
print(a, a.shape)
print(a[0])
print(a[0][0])
print(a[0][0][0])
print(a[0, 0, 0])
for i in range(a.shape[0]):
for j in range(a.shape[1]):
for k in range(a.shape[2]):
print(a[i, j, k])
ndarray对象数组的自定义类型
import numpy as np
data=[
('zs', [90, 80, 85], 15),
('ls', [92, 81, 83], 16),
('ww', [95, 85, 95], 15)
]
a = np.array(data, dtype='U3, 3int32, int32')
print(a)
print(a[0], ":", a[0]['f0'], ":", a[0]['f1'], ":", a[0]['f2'])

c = np.array(data, dtype={'names': ['name', 'scores', 'ages'],
'formats': ['U3', '3int32', 'int32']})
print(c[0]['name'], ":", c[0]['scores'], ":", c[0]['ages'])

切片操作
一维数组切片
import numpy as np
a = np.arange(1, 10)
print(a)
print(a[:3])
print(a[3:6])
print(a[6:])
print(a[::-1])
print(a[:-4:-1])
print(a[-4:-7:-1])
print(a[-7::-1])
print(a[::])
print(a[:])
print(a[::3])
print(a[1::3])
print(a[2::3])
多维数组切片
mport numpy as np
a = np.arange(1, 28)
a.resize(3,3,3)
print(a)
print(a[1, :, :])
print(a[:, 1, :])
print(a[0, :, 1])
ndarray数组的掩码操作
import numpy as np
a = np.arange(0, 10)
mask = [True, False,True, False,True, False,True, False,True, False]
print(a[mask])
多维数组的组合和拆分
import numpy as np
a = np.arange(1, 7).reshape(2, 3)
b = np.arange(7, 13).reshape(2, 3)
c = np.vstack((a, b))
d, e = np.vsplit(c, 2)
import numpy as np
a = np.arange(1, 7).reshape(2, 3)
b = np.arange(7, 13).reshape(2, 3)
c = np.hstack((a, b))
d, e = np.hsplit(c, 2)
import numpy as np
a = np.arange(1, 7).reshape(2, 3)
b = np.arange(7, 13).reshape(2, 3)
i = np.dstack((a, b))
k, l = np.dsplit(i, 2)
np.concatenate((a, b), axis=0)
np.split(c, 2, axis=0)
简单案例
import numpy as np
a = np.array([1,2,3,4,5])
b = np.array([1,2,3,4])
b = np.pad(b, pad_width=(0, 1), mode='constant', constant_values=-1)
print(b)
c = np.vstack((a, b))
print(c)
a = np.arange(1,9)
b = np.arange(9,17)
c = np.row_stack((a, b))
print(c)
d = np.column_stack((a, b))
print(d)