Numpy
概念
NumPy 是一个运行速度非常快的数学库,主要用于数组计算,包含:
- 一个强大的N维数组对象 ndarray
- 广播功能函数
- 整合 C/C++/Fortran 代码的工具
- 线性代数、傅里叶变换、随机数生成等功能
NumPy 通常与 SciPy(Scientific Python)和 Matplotlib(绘图库)一起使用, 这种组合广泛用于替代 MatLab,是一个强大的科学计算环境,适合学习数据科学或者机器学习。
主要方法
像数据类型、基本函数就不多讲了,记一下主要运用的方法和属性就行了。
创建数组
下列表中的参数为数组的属性,后面均有解释
方法 | 描述 |
---|---|
numpy.empty(shape, dtype = float, order = 'C') | 用来创建一个指定形状(shape)、数据类型(dtype)且未初始化的数组 |
numpy.zeros(shape, dtype = float, order = 'C') | 创建指定大小的数组,数组元素以 0 来填充 |
numpy.ones(shape, dtype = None, order = 'C') | 创建指定形状的数组,数组元素以 1 来填充 |
numpy.arange(start, stop, step, dtype) | 根据 start 与 stop 指定的范围以及 step 设定的步长,生成一个 ndarray。 |
np.linspace(start, stop, num=50, endpoint=True, retstep=False, dtype=None) | 创建一个一维数组,数组是一个等差数列构成的 |
np.logspace(start, stop, num=50, endpoint=True, base=10.0, dtype=None) | 创建一个于等比数列 |
numpy.asarray(a, dtype = None, order = None) | 类似 numpy.array,用于将其它数据类型转换为 ndarray |
numpy.frombuffer(buffer, dtype = float, count = -1, offset = 0) | 用于实现动态数组,接受 buffer 输入参数,以流的形式读入转化成 ndarray 对象 |
numpy.fromiter(iterable, dtype, count=-1) | 从可迭代对象中建立 ndarray 对象,返回一维数组 |
参数解释:
参数 | 描述 |
---|---|
shape | 数组形状 |
dtype | 数据类型,可选 |
order | 有"C"和"F"两个选项,分别代表,行优先和列优先,在计算机内存中的存储元素的顺序 |
a | 任意形式的输入参数,可以是,列表, 列表的元组, 元组, 元组的元组, 元组的列表,多维数组 |
buffer | 可以是任意对象,会以流的形式读入 |
count | 读取的数据数量,默认为-1,读取所有数据 |
offset | 读取的起始位置,默认为0 |
iterable | 可迭代对象 |
dytpe | 返回数组的数据类型 *numpy.fromiter() |
切片和索引
记录一下常用的索引和切片方式,其实和列表差不多的:
import numpy as np
s = slice(2,7,2) # 从索引 2 开始到索引 7 停止,间隔为2
b = a[2:7:2] # 从索引 2 开始到索引 7 停止,间隔为 2
c = a[2:5] # 从索引 3 开始到索引 4 停止,也就是不包括两个参数索引
d = a[5] # 返回索引 5
e = a[2:] # 从索引 2 一直到结束
#省略号 …,来使选择元组的长度与数组的维度相同。 如果在行位置使用省略号,它将返回包含行中元素的 ndarray。
A = np.array([[1,2,3],[3,4,5],[4,5,6]])
f = a[...,1] # 第2列元素
g = a[1,...] # 第2行元素
h = a[...,1:] # 第2列及剩下的所有元素
#坐标索引,和多维列表类似,甚至在仅去单个元素时与列表是相同的方式。
x = np.array([[1, 2], [3, 4], [5, 6]])
y = x[[0,1,2], [0,1,0]] # x[[元素1行坐标,元素2行坐标,元素3行坐标],[元素1列坐标,元素2列坐标,元素3列坐标]]
print (y) # [1 4 5]
#这种方式返回的结果为单个数组,也可以将结果返回为多个数组,只是将行列坐标再嵌套一层即可例如:x[[[0],[1],[2]],[[0],[1],[0]]] >>> [[1],[4],[5]]
#布尔索引,与运算符结合
print(x[x>4]) # >>>[5 6]
更多索引可以去菜鸟教程看看
数组操作
数组元素的添加与删除
方法 | 描述 |
---|---|
numpy.append(arr, values, axis=None) | 将值添加到数组末尾 |
numpy.insert(arr, obj, values, axis) | 沿指定轴将值插入到指定下标之前 |
Numpy.delete(arr, obj, axis) | 删掉某个轴的子数组,并返回删除后的新数组 |
运算方法
这部分见菜鸟教程吧
未完待续。。。