为了应付作业而记的Numpy笔记

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) 删掉某个轴的子数组,并返回删除后的新数组

运算方法
这部分见菜鸟教程

未完待续。。。

发表评论

此站点使用Akismet来减少垃圾评论。了解我们如何处理您的评论数据