# import numpy
:Python 的第三方库,用于进行多维数组、矩阵的运算。
- 官方文档 (opens new window)
- 安装:
pip install numpy
# 数组
numpy 使用
ndarray
类存储数组,简称为 array 。- 数组的维(dimensions)称为轴(axes)。
- 数组中所有元素的数据类型必须相同,通常为数值。
- 数组在创建之后的大小是固定的,更改数组的大小会删除原数组并创建一个新数组。
numpy 的底层函数是基于 C 语言实现,性能很好。例如:
- 在 Python 中让两个一维列表相乘的代码通常为:
c = [] for i in range(len(a)): c.append(a[i]*b[i])
- 在 numpy 底层让两个一维数组相乘的代码通常为:
for (i = 0; i < length; i++): { c[i] = a[i]*b[i]; }
- 在 Python 中调用 numpy ,一方面能使用
c = a * b
这样简便的语法,另一方面又能实现很好的性能(比如耗时低、占用内存少)。
- 在 Python 中让两个一维列表相乘的代码通常为:
# 创建
创建一维数组:
>>> import numpy as np >>> a = np.array([1, 2, 3]) # 传入一个 Python 列表,创建数组 >>> a array([1, 2, 3])
- 相关 API :
def array(object, dtype=None, *, copy=True, order='K', subok=False, ndmin=0)
- 相关 API :
创建二维数组:
>>> b = np.array([(1 , 2, 3), (4.0, 5., -6)]) >>> b array([[ 1., 2., 3.], [ 4., 5., -6.]]) >>> b.dtype dtype('float64')
- 该数组有 2 个轴,第一个轴的长度为 2 ,第一个轴的长度为 3 。
- 如果输入的某个数组元素为浮点型,则所有元素都会保存为浮点型。
# 调用
数组的常用属性:
>>> a.ndim # 轴数 1 >>> a.shape # 形状,是一个元组,包含每个轴的长度 (3,) >>> a.size # 元素的总数 3 >>> a.dtype # 元素的类型 dtype('int32') >>> a.dtype.name 'int32' >>> a.itemsize # 每个元素占用的存储空间,单位为 bytes 4
数组的常用方法:
>>> a.sum() 6 >>> a.min() 1 >>> a.max() 3
# 运算
算术运算:
>>> a - b array([[ 0., 0., 0.], [-3., -3., 9.]]) >>> a + b array([[ 2., 4., 6.], [ 5., 7., -3.]]) >>> a * b array([[ 1., 4., 9.], [ 4., 10., -18.]]) >>> a / b array([[ 1. , 1. , 1. ], [ 0.25, 0.4 , -0.5 ]]) >>> a % b array([[ 0., 0., 0.], [ 1., 2., -3.]]) >>> a ** 2 array([1, 4, 9], dtype=int32)
逻辑运算:
>>> a == 1 array([ True, False, False]) >>> a < 2 array([ True, False, False])
# 矩阵
- 例:
>>> import numpy as np >>> m = np.matrix([[1,2,3],[4,5,6],[7,8,9]]) >>> m matrix([[1, 2, 3], [4, 5, 6], [7, 8, 9]]) >>> m.T # 返回当前矩阵的转置 matrix([[1, 4, 7], [2, 5, 8], [3, 6, 9]])