一、NumPy库
二、Numpy库核心——ndarray
1.初识ndarray
2.ndarray的属性和方法
三、ndarray 运算
1.ndarray 矩阵运算
2.ndarray 通用函数计算
3.ndarray 基础统计方法
四、ndarray 切片与索引
1.基础切片与索引
2.布尔值索引
五、ndarray 删除操作
六、ndarray 合并操作
七、NumPy 其他常用函数或方法
1.一维数组生成函数
2.多维数组生成函数
3.随机数生成
一、导入Numpy库
import Numpy as np
array
保存同类数据的容器,特别是支持矩阵(列表,元组不可以)
创建一个ndarray对象
c = np.array([1, 2, 3, 4, 5])
创建一个ndarray的矩阵对象
d = [[1, 2 ,3], [4, 5, 6]]e = np.array(d)e

元组在ndarray中的特殊性
g = np.array([1,None, 3, 'bo', (1,2)])g[-1] = 1 报错 #因为最后一个位置是元组g[1] = 1 成功
备注:
- 元组,一种固定长度的,不可变的python对象序列
- 列表,长度可变的,内容可修改的序列
- ndarray,高效多维同类数据容器,支持矩阵
二、NumPy 数据类型:
int8/int16/int32——整数类型float16/float32/float64/float128——浮点数类型object——object类型bool——布尔值类型string_——字符串类型unicode_——unicode类型complex64/complex128/complex256——复数类型
ndarray 的属性和方法
shape
返回形状
d = [[1, 2 ,3], [4, 5, 6]]e = np.array(d)e.shape
2行3列
reshape
改变形状
e_ = e.reshape(3, 2)e

但是要注意 前后中变化括号的乘积要一样
e_ = e.reshape(4, 2)
报错: 
dtype
查看数据类型
e.dtype

ndim
返回维度,就是几个方括号

e.ndim

e.reshape(2,1,3)

返回2行1列,每行3个元素
astype
就是转换numpy数组的数据类型
e_int8 = e.astype("int8")e_int8

最后一个dtype改变了(数据类型会影响精度)
三、ndarray 运算
相比列表的加法
列表加法是拼接
a = [1, 2, 3]b = [4, 5, 6]a + b

ndarray是对应位置相加(包括减乘除)
a_ = np.array(a)b_ = np.array(b)a_ + b_

ndarray 通用函数计算
一元通用函数:接收一个ndarray对象,并进行逐元素操作
每个位置求平方
np.square(a)

开根号
np.sqrt(a_)

二元通用函数:接收两个ndarray对象,并进行计算操作
对应位置相加
a_=array([1, 2, 3])b_=array([4, 5, 6])np.add(a_,b_)
对应的平方
np.multiply(a_,b_)

ndarray 基础统计方法
e = array([[1, 2, 3],[4, 5, 6]])
axis参数
e.sum(axis = 0) #按照列相加

e.sum(axis = 1)

argmin argmax 返回最大(小)的索引位置

四、 ndarray 切片与索引
1. 基础索引与切片
a = np.array([1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16])a_ = a.reshape(4,4)a_output:array([[ 1, 2, 3, 4],[ 5, 6, 7, 8],[ 9, 10, 11, 12],[13, 14, 15, 16]])
a[4] #取第五个元素output:5
操作行或列
a_[:2] #取出前两行
a_[:2] #取出前两列 性质(左开右闭)

同时操作行和列
抖号前面是对行操作,后面是对列操作
#选择全部行 以及前2列a_[:,:2]output:array([[ 1, 2],[ 5, 6],[ 9, 10],[13, 14]])#选择前2行2列a_[:2,:2]output:array([[1, 2],[5, 6]])
2. 布尔值索引
person = np.array(["A","B","C","D","E","F","G"])group = np.array([1, 2, 1, 1, 1, 2, 2])group == 1#根据true和false选择元素output:array([ True, False, True, True, True, False, False])person[group == 1]output:array(['A', 'C', 'D', 'E'], dtype='<U1')
五、ndarray 删除操作
a = np.array([[1,2,3,4], [5,6,7,8], [9,10,11,12]])aoutput:array([[ 1, 2, 3, 4],[ 5, 6, 7, 8],[ 9, 10, 11, 12]])np.delete(a, 1, axis = 0) #删除第二行output:array([[ 1, 2, 3, 4],[ 9, 10, 11, 12]])
六、ndarray 合并操作
对应位置相加
a = np.array([[1,2,3,4], [5,6,7,8], [9,10,11,12]])b = aa + boutput:array([[ 2, 4, 6, 8],[10, 12, 14, 16],[18, 20, 22, 24]])
拼接
np.concatenate((a, b),axis = 0) #按照行拼接output:array([[ 1, 2, 3, 4],[ 5, 6, 7, 8],[ 9, 10, 11, 12],[ 1, 2, 3, 4],[ 5, 6, 7, 8],[ 9, 10, 11, 12]])np.concatenate((a, b),axis = 1) #按照列拼接output:array([[ 1, 2, 3, 4, 1, 2, 3, 4],[ 5, 6, 7, 8, 5, 6, 7, 8],[ 9, 10, 11, 12, 9, 10, 11, 12]])
七、Numpy 其他常用函数或方法
1. 一维数组生成函数
arrange函数
a = np.arange(10)aouyput:array([0, 1, 2, 3, 4, 5, 6, 7, 8, 9])
等分生成
h = np.linspace(0, 10, 5)houtput:array([ 0. , 2.5, 5. , 7.5, 10. ])
2. 多维数组生成函数
生成3行5列的全0 ndarray对象
a = np.zeros((3, 5))aoutput:array([[0., 0., 0., 0., 0.],[0., 0., 0., 0., 0.],[0., 0., 0., 0., 0.]])
生成2行4列的全1 ndarray对象
b = np.ones((2, 4))boutput:array([[1., 1., 1., 1.],[1., 1., 1., 1.]])
3. 随机数生成
0到20随机生成3行5列的矩阵
a = np.random.randint(0, 20, size = (3, 5)) #0到20随机生成3行5列的矩阵aoutput:array([[10, 2, 15, 3, 18],[19, 19, 15, 8, 3],[ 0, 9, 14, 9, 10]])
正态分布
b = np.random.normal(size=(3,5))boutput:array([[-0.39876998, -3.18802773, -0.59966543, -0.63054271, 0.29046826],[ 2.08228931, -1.47918602, 0.04731244, 1.06674045, 1.32635611],[ 1.16970738, 1.44315663, -2.25150722, 0.64030745, 0.12519226]])
np.random.seed
np.random.seed() 函数用于生成指定随机数。 seed() 被设置了之后, np, random.random() 可以按顺序产生一组固定 的 数组,如果使用相同 的seed() 值,则每次生成 的 随即数都相同,如果不设置这个值,那么每次生成 的 随机数不同。
np.random.permutation
随机排列一个序列,返回一个排列的序列


