numpy 关键数据结构 ndarray
numpy官方教程:https://www.numpy.org/devdocs/user/quickstart.html
numpy 是几个知名ML库的基础,其中基本上所有 numpy 功能都是围绕 ndarray 设计,ndarray 本质是一个同类型元素多维矩阵 (NumPy’s main object is the homogeneous multidimensional array)
基础属性(basic attribute)
ndarray.ndim #有多少维
ndarray.shape #返回一个元组,代表每一维有多少列
ndarray.size #总共有多少元素
ndarray.dtype #元素的类型
ndarray.itemsize #每个元素的大小
ndarray.data #返回ndarray的实际数据存储对象,返回类型 memoryview
创建(creation)
a=np.arrry([1,2,3])
a=np.array([(1,2,3), (4,5,6)])
a=np.zeros((3,4)) #全是0的矩阵
a=np.empty((3,4)) #未被初始化的矩阵
a=np.random.random((2,3))
a=np.arange([start, ]stop, [step, ]dtype=None) # 这个也是返回的 ndarray, 只不过都是一维的
a=np.array(12).reshape(3,4) # 这两个配合就可创建很多矩阵
基本操作(basic operations)
c=a-b # 矩阵元素一对一减法
a**2 # 每个元素进行平方
10*a # 数乘
a<35 # 比较每个元素和35大小,返回一个同样大小的 bool 矩阵
a*=3
a+=b
a.sum() # 所有元素和
a.min([axis=0]) # 最小值[第几维度每一行的最小值]
a.max()
np.exp(a)
np.sqrt(a)
np.add(a,b)
元素索引(indexing)
a=np.arange(10)
a[1], a[1:3] # 一维可以 indexing, iterating, slicing
a=np.arange(12).reshape(3,4)
a[2,3], a[:,2] # 多维可以这样引用元素
a[-1] == a[-1, :] # True
for row in a:
row # 按照 first axis 进行循环
对形状改变(reshaping)
a=np.arange(12).reshape(3,4) # reshape 只是返回新 ndarray,而不是修改原矩阵
a=a.T # 转置
a.resize((2,6)) # resize 是直接调整原 ndarray
a.resize(2,6) # 这样调用亦可
多个矩阵合并(stacking)与划分(spliting)
# stacking
a=np.arange(6).reshape(2,3)
b=np.ones((2,3), dtype=int)
np.vstack((a,b)) #变成 (4,3) 矩阵,纵向合并
np.hstack((a,b)) #变成 (2,6) 矩阵,横向合并
np.column_stack((a,b)) # 可以将多个一维矩阵合并成一个二维,每一个一维作为一列
#spliting
a=np.ones((2,12), dtype=int)
np.hsplit(a, 3) # 竖直分成三个 (2,4) 矩阵
np.hsplit(a, (3,4)) # 竖直分成 (2,3), (2,1), (2,8) 矩阵,也就是从第3,4列进行划分
拷贝(copying)
未完待续