numpy模块常用函数及解析
numpy作为python数据处理最常用的模块被广泛使用。本文总结了日常使用过程中numpy常用的函数及其用法(长期更新)。
import numpy as np
1. 数学运算
1.1 取对数 np.log()
对其中的每个元素取自然对数。
numpy.log(x, /, out=None, *, where=True, casting='same_kind', order='K', dtype=None, subok=True[, signature, extobj])
# x: 输入
# return: x的自然对数
# e.g.
np.log([1, np.e, np.e**2, 0])
array([ 0., 1., 2., -Inf])
2. 统计变量的数字特征
2.1 np.mean()
计算指定axis下的算术平均值。
numpy.mean(a, axis=None, dtype=None, out=None, keepdims=<no value>, *, where=<no value>)
# a: 输入数组
# axis: 均值计算的轴,默认会将数组打平(flatten)后计算均值
# return: 指定轴的均值或均值向量
# e.g.
a = np.array([[1, 2], [3, 4]])
np.mean(a)
2.5 # flatten 之后计算均值
# ---------------------------------------
np.mean(a, axis=0)
array([2., 3.]) # 列求平均,所有的行(0)相加
# ---------------------------------------
np.mean(a, axis=1)
array([1.5, 3.5]) # 行求平均,所有的列(1)相加
2.2 np.std()
计算指定axis下的标准差。
numpy.std(a, axis=None, dtype=None, out=None, ddof=0, keepdims=<no value>, *, where=<no value>)[source]
# 参数同np.mean()函数
# e.g.
a = np.array([[1, 2], [3, 4]])
np.std(a)
1.1180339887498949 # may vary
# ---------------------------------------
np.std(a, axis=0)
array([1., 1.])
# ---------------------------------------
np.std(a, axis=1)
array([0.5, 0.5])
3. 矩阵及数组的生成
3.1 np.empty()
返回给定形状和类型的矩阵。
numpy.empty(shape, dtype=float, order='C', *, like=None)
# shape: 矩阵形状
# dtype: 数据类型,默认为numpy.float64.
# return: 指定维度的未被初始化(数值任意)的矩阵
# e.g.
np.empty([2, 2], dtype=int)
array([[-1073741821, -1067949133],
[ 496041986, 19249760]])
3.2 np.array()
创建一个数组。
numpy.array(object, dtype=None, *, copy=True, order='K', subok=False, ndmin=0, like=None)
# object: 数组,或者任何可以显示数组接口的对象。(注:一般是python列表)
# dtype: 数据类型,如果不给出,则该类型将确定为按顺序保留对象所需的最小类型
# return: numpy格式的数组
# e.g.
np.array([[1, 2], [3, 4]])
array([[1, 2],
[3, 4]])
3.3 np.zeros() 、np.ones()、np.eye()
np.zeros() :返回指定形状下的全零数组。
np.ones() :返回指定形状下的全1数组。
np.eye() :返回指定形状下的单位阵。
numpy.zeros(shape, dtype=float, order='C', *, like=None)
# ---------------------------------------
numpy.ones(shape, dtype=None, order='C', *, like=None)
# shape: 新数组的形状
# dtype: 数据类型,默认为numpy.float64.
# return: 指定形状的数组
# e.g.
np.zeros(5)
array([ 0., 0., 0., 0., 0.])
# ---------------------------------------
np.ones(5)
array([1., 1., 1., 1., 1.])
# ---------------------------------------
numpy.eye(N, M=None, k=0, dtype=<class 'float'>, order='C', *, like=None)
# N: 输出数组行数
# M: 可选,输出数组列数,默认等于行数
# dtype: 数据类型,默认为numpy.float64.
# e.g.
np.eye(2, dtype=int)
array([[1, 0],
[0, 1]])
4. 矩阵及数组运算
4.1 np.reshape() 或者 [array].reshape()
在不改变数组元素的情况下更改其形状。
numpy.reshape(a, newshape, order='C')
# a: 输入数组
# newshape: 输出数组的形状
# return: 输出数组
# ---------------------------------------
[array].reshape(newshape)
# newshape: 同上
# e.g.
a = np.array([[1,2,3], [4,5,6]])
np.reshape(a, 6)
array([1, 2, 3, 4, 5, 6])
# ---------------------------------------
a = np.arange(6).reshape((3, 2))
array([[0, 1],
[2, 3],
[4, 5]])
# remark
a. reshape(1,-1) # 转换成一行,自动计算列
b. reshape(-1,1) # 转换成一列,自动计算行
4.2 np.concatenate()
沿现有的axis连接一系列数组。
numpy.concatenate((a1, a2, ...), axis=0, out=None, dtype=None, casting="same_kind")
# a1, a2, …: 数组序列,除了axis维度,数组必须有相同得shape
# asix: 数组的哪个axis将会被连接
# e.g.
a = np.array([[1, 2], [3, 4]])
b = np.array([[5, 6]])
np.concatenate((a, b), axis=0)
array([[1, 2],
[3, 4],
[5, 6]])
# ---------------------------------------
np.concatenate((a, b.T), axis=1)
array([[1, 2, 5],
[3, 4, 6]])