目录
- 一: Ndarray对象介绍:
- 二: 数组的基本使用:
- 1: numpy数据类型
- 2: 创建ndarray数组对象
- 3: numpy数组与Python中列表对比
- 三: 元素操作
- 3.1: 切片和索引
- 3.2: 高级索引
- 3.3: 广播
- 形状相同的对象, 可以直接操作
- 3.4: 迭代
- 四: 数组操作
- 4.1: 修改数组形状
- 4.2: 翻转数组
- 4.3: 修改数组维度
- 4.4: 连接数组
- 4.5: 分割数组
- 4.6: 数组元素的添加和删除
- 五:函数
- 5.1: 字符串函数
- 5.2: 数学函数
- 5.3: 算数函数
- 5.4: 排序函数
- 5.5: 搜索函数
- 六:拷贝
- 6.1: 赋值
- 6.2: 视图
- 6.3: 副本
- 七:IO操作
- 6.1: IO函数
一: Ndarray对象介绍:
- ndarray只能存储相同的元素(每个元素在内存中占用相同的大小)
- ndarray是多维数组。
二: 数组的基本使用:
1: numpy数据类型
- numpy的数据类型实际上是dtype对象的实例,并对应唯一的字符, 包括: np.bool_, np.int32, np.float32等等。
- 每个内建类型,都有一个唯一定义它的字符代码
- b : 布尔类型
- i : 有符号整型
- u : 无符号整型
- f : 浮点类型
- c : 复数浮点类型
- m : timedalta 时间间隔类型
- M : datetime (日期类型)
- O : 对象
- S, s : byte 类型
- U: unicode 类型
- v 原始数据类型(viod)
- 数据类型对象(dtype)
- 作用: 与数据对应的内存区域如何使用。
- 创建数据类型对象
2: 创建ndarray数组对象
- ndarray所有的数据类型结构必然是相同的
- 如果传递进来的是不同类型, 则需要转换成同个类型: str > float > int
- numpy.array(object, dtype = None, copy = True, order = None, subok = Flase, ndmin = 0)
- object: 数组/嵌套的数列
- dtype: 数据元素类型
- copy: 是否支持复制
- order: 创建数组的样式(C: 行方向, F列方向, A任意方向)
- subok: 返回一个与基类型一致的数组
- ndmin: 指定数组的最小维度
- numpy.asarray(a, dtype= None, order = None)
- a : 任意输入形式
- dtype : 类型
- order : C代表行优先, F代表列优先
- numpy.empty(shape, dtype=float, order = “C”)
- shape: 数组形状
- dtype: 数组类型
- order: C: 行优先; F: 列优先
- numpy.zeros(shape, dtype = float, order = “C”)
- shape: 数组形状
- dtype: 数据类型
- order: ‘C’行, ‘F’ 列
- 作用: 创建指定大小的数组, 数据元素默认用0填充
- numpy.ones(shape, dtype = float, order = “C”)
- shape: 数组形状
- dtype: 数据类型
- order: ‘C’行, ‘F’ 列
- 作用: 创建指定大小的数组, 数据元素默认用1填充
- numpy.eye(N, M=None, k=0, dtype=float, order=“C”)
- 作用:对角线为1, 其余的均为0.
- N: 行数量
- M: 列数量
- dtype: 数据类型
- order: ‘C’行, ‘F’ 列
- numpy.arange(start, stop, step, dtype)
- 作用: 创建数值类型范围
- stop: 终止值
- start: 开始值
- step: 步长
- numpy.frombuffer(buffer, dtype = float, count= 1, offset = 0)
- 作用, 传入其他对象, 转换成数组对象
- buffer: 任意对象
- dtype: 类型
- count: 读取的数据量
- offset: 偏移掉的个数
- numpy.fromiter(iterable, dtype, count=1)
- 作用:将可迭代对象转换成ndarry对象
- iterable: 可迭代对象
- dtype: 返回的类型
- count: 读取的数据量
- numpy.linespace(start, stop, num=50, endpoint=True, restep=False, dtype=None)
- 作用: 创建一个等差数列构成的一维数组
- start : 序列开始值
- stop : 序列终止值
- num: 生成一维数组的长度
- endpoint: true: 数列中包含stop
- restep: true: 显示间距
- numpy.logspace(start, stop, num=50, endpoint=True, base=10.0, dtyope=None)
- 作用: 创建等比数列
- base: 对数log的底数
- start: 序列开始值: base * start
- stop: 序列终止值: base * stop
- num: 生成一维数组的长度
- endpoint: true: 数列中包含stop
- np.random.rand()
- 作用: 生成0到1之间的随机数
- np.random.random(size=None)
- 作用: 生成0到1之间的随机数
- size: 指定元素的个数
- np.random.randint(size=None)
- 作用: 生成0到1之间的随机整数
- low: 下限
- hight: 上线
- size: 个数
- dtype: 类型
- np.random.randn()
- 作用: 返回一个/一组, 标准正态分布的数据。
- np.random.normal(loc=0.0, scale=1.0, size = None)
- 作用: 生成高斯分布的概率密度随机数
3: numpy数组与Python中列表对比
- ndarray的维度/轴的数量, 叫秩。可以用axis进行声明。
- axis = 0, 表示对列进行操作。
- axis = 1, 表示对行进行操作。
- 常用的属性
- ndmin: 秩
- shape: 数组的维度: n行m列
- size: 数组的大小: n * m
- dtype: 对象元素属性
- itemsize: 对象元素的大小
- flags: 对象的内存信息
- real: 元素的实部
- imag: 元素的虚部
三: 元素操作
3.1: 切片和索引
- ndarray对象可以像列表一样, 使用下标进行访问。
- 可以使用内置slice函数, 设置: start, stop, step,基于原来的ndarray对象, 创建一个新的nadarry对象。
- … 表示取全部
3.2: 高级索引
- 整数索引
- 布尔索引
3.3: 广播
形状相同的对象, 可以直接操作
- 形状不相同, 通过广播后, 也可以进行运算
3.4: 迭代
- numpy.nditer()进行迭代
- 列优先遍历和行优先遍历
- 默认是行优先遍历
- 遍历的过程中修改元素
- 外部循环
- 参数:flags
- c_index
- f_index
- nulti-index
- external_loop : 遍历完的数据, 放到一个数组中。
- 广播迭代
四: 数组操作
4.1: 修改数组形状
- reshape(shape, order)
- shape: (2, 3)
- order: 顺序
- flat:
- 数值形式拿出来
- flatten()
- 展平: 不会修改原数组
- ravel()
- 展平: C方式修改原数组, F方式不会修改原来数组。
4.2: 翻转数组
- transpose(a, axes)
- 作用: 翻转数组
- axes: 要翻转的维度
- a: 原来的数组
- a.T
- 作用: 翻转数组
- rollaxis(a, axis, start=0):
- a : 原始数组
- axis: 向后滚动的轴
- start: 开始滚动的轴, 默认是0轴。
- swapaxes(a, axis1, axis2)
- 交换数组的两个轴
4.3: 修改数组维度
- broadcast()
- broadcast_to()
- 将数组广播到新的形状
- expand_dims()
- 增加维度
- squeeze()
- 降低维度
4.4: 连接数组
- np.concatenate()
- np.stack()
- np.hstack()
- np.vstack()
4.5: 分割数组
- np.splite()
- np.hsplite()
- np.vsplite()
4.6: 数组元素的添加和删除
- 重置数组
- resize(arr, shape)
- 不够的话, 从开头开始取之, 补充到最后。
- 追加数组
- numpy.append(arr, values, axis=None)
- 在数组尾部追加
- 追加后的数组是个新数组
- 追加的数组的维度必须匹配
- 插入数据
- insert(arr, obj, values,axis)
- 删除指定的子数组, 得到新数组
- numpy.delete(arr, obj, axis)
- 数组去重
- numpy.unique(arr, return_index, return_inverse, return_counts)
- return_index: 现在数据元素在原数组中的下标
- return_inverse: 原来数组在现数组中的下标
- return_counts: 返回原数组中该元素的数量
五:函数
5.1: 字符串函数
- add()
- 元素拼接
- nultiply()
- 多重拼接
- center()
- 左右填充
- capitalize()
- 单词首字母大写
- title()
- 首个字母大写
- lower()
- 转化小写
- upper()
- 转化大写
- split()
- 指定分隔符, 进行切割
- splitlines()
- 根据换行符切割
- strip()
- 去除首尾的空格
- join()
- 指定分隔符连接元素
- encode()
- 编码
- decode()
- 解码
5.2: 数学函数
- 三角函数
- np.sin()
- np.cos()
- np.tan()
- np.arcsin()
- np.arccos()
- np.arctan()
- 四舍五入
- around()
- floor(): 向上取整
- ceil(): 向下取整
5.3: 算数函数
- 加减乘除
- np.add()
- np.subtract()
- multiply()
- divide()
- 取倒数
- reciprocal()
- 幂运算
- power()
- 取余数
- mod()
- remainder()
5.4: 排序函数
- sort()
- argsort()
- lexsort()
- msort()
5.5: 搜索函数
- 搜索给定轴最大值和最小值(索引)
- min(): 返回最小值
- max(): 返回最大值
- argmin(): 返回最小值下标
- argmax(): 返回最大值下标
- 返回非0元素的索引:
- nonzero()
- 返回给定条件的索引:
- where()
- 抽取符合条件的元素返回
- extract()
六:拷贝
6.1: 赋值
6.2: 视图
6.3: 副本
七:IO操作
6.1: IO函数