N维ndarray(ndarray)

ndarray是具有相同类型和大小的项目的(通常是固定大小的)多维容器。ndarray中的维和项的数量由其shape(维度)定义,该维度是指定每个维的大小的N个正整数的 元组 ndarray中的项类型由单独的数据类型对象(dtype)指定,其中一个对象与每个ndarray关联。

N维ndarray的构造

将list转换为ndarray
numpy.array(object, dtype=None, ndmin=0)
#object对象,dtype数据类型,ndmin维度

a=[[1,2],[3,4]]
numpy.array(a)
#将List转换为ndarray
numpy.array(object, dtype=None, ndmin=0)
#object对象,dtype数据类型,ndmin维度

a=[[1,2],[3,4]]
numpy.array(a)
#将List转换为ndarray
从txt导入ndarray
numpy.loadtxt('a.txt',delimiter=' ',skiprows=0,usecols=(0,1),unumpyack=False,dtype=float,comments='#')
#delimiter分隔符,skiprows忽略前n行,usecols取那几列,unumpyack是否分列读取,dtype数据类型,comments跳过开头为#的行
numpy.loadtxt('a.txt',delimiter=' ',skiprows=0,usecols=(0,1),unumpyack=False,dtype=float,comments='#')
#delimiter分隔符,skiprows忽略前n行,usecols取那几列,unumpyack是否分列读取,dtype数据类型,comments跳过开头为#的行
内置函数生成ndarray
numpy.ones(shape, dtype=None, order='C')
#产生元素全是1的维度为shape的ndarray

numpy.zeros(shape, dtype=float, order='C')
#产生元素全是0的维度为shape的ndarray,默认类型是float

numpy.linspace(start, stop, num)
#产生从start到stop间隔均匀的num个浮点数

numpy.arange([start, ]stop, [step, ]dtype=None)
#类似[i for i in range()],只不过类型是ndarray

numpy.random.randint(min,max,n)
#产生包含n个随机元素(含头不含尾)的ndarray
numpy.random.randint(a,b,size=(c,d))
#产生a行b列的范围在(c,d)的随机ndarray

numpy.random.normal(min,max,n)
#产生符合正态分布包含n个随机元素(含头不含尾)的ndarray

numpy.random.rand(a,b)
#产生a行b列随机ndarray
numpy.ones(shape, dtype=None, order='C')
#产生元素全是1的维度为shape的ndarray

numpy.zeros(shape, dtype=float, order='C')
#产生元素全是0的维度为shape的ndarray,默认类型是float

numpy.linspace(start, stop, num)
#产生从start到stop间隔均匀的num个浮点数

numpy.arange([start, ]stop, [step, ]dtype=None)
#类似[i for i in range()],只不过类型是ndarray

numpy.random.randint(min,max,n)
#产生包含n个随机元素(含头不含尾)的ndarray
numpy.random.randint(a,b,size=(c,d))
#产生a行b列的范围在(c,d)的随机ndarray

numpy.random.normal(min,max,n)
#产生符合正态分布包含n个随机元素(含头不含尾)的ndarray

numpy.random.rand(a,b)
#产生a行b列随机ndarray
Meshgrid高维操作
a = numpy.array([1,2,3]) #
#相当于x轴取值
b = numpy.array([7,8]) #
#相当于y轴取值
# 返回list,有两个元素,第一个元素是X轴的取值,第二个元素是Y轴的取值
res = numpy.meshgrid(a,b)
#返回结果: [array([ [1,2,3] [1,2,3] ]) #, array([ [7,7,7] [8,8,8] ]) #],两个ndarray一一对应正好是x,y平面所有可取点
a = numpy.array([1,2,3]) #
#相当于x轴取值
b = numpy.array([7,8]) #
#相当于y轴取值
# 返回list,有两个元素,第一个元素是X轴的取值,第二个元素是Y轴的取值
res = numpy.meshgrid(a,b)
#返回结果: [array([ [1,2,3] [1,2,3] ]) #, array([ [7,7,7] [8,8,8] ]) #],两个ndarray一一对应正好是x,y平面所有可取点

常用属性

属性

描述

ndarray.shape

ndarray的维度的元组

ndarray.ndim

ndarray的维数

ndarray.size

ndarray中元素数量

ndarray.dtype

ndarray中的数据类型

ndarray.T

二维情况下是转置,一维情况下返回自身

ndarray操作

a+b
#+-*/都是逐元素运算

a.dot(b)
a@b
#矩阵乘法

numpy.power(a,b)
#对ndarray(a)的每个元素进行b次幂运算

a.transpose()
a.T
#转置矩阵

numpy.std(a, axis=None, dtype=None, out=None, ddof=0, keepdims=<no value>)
#标准差,a:ndarray,axis轴(None或int或int组成的元组)

numpy.var(a, axis=None, dtype=None, out=None, ddof=0, keepdims=<no value>)
#标准差,a:ndarray,axis轴(None或int或int组成的元组)

a.reshape(1,2)
a.resize(1,2)
#reshape:有返回值,所谓有返回值,即不对原始多维数组进行修改;
#resize:无返回值,所谓有返回值,即会对原始多维数组进行修改;
#改变shape

numpy.flatten()
#将ndarray化为一维

numpy.vstack((a,b))
#上下结合

numpy.hstack((a,b))
#左右结合

a[a>0]
#取大于零的ndarray所有元素

numpy.linalg.inv(A)
#对ndarrayA求逆
numpy.linalg.pinv(A)
#对ndarrayA求伪逆
a+b
#+-*/都是逐元素运算

a.dot(b)
a@b
#矩阵乘法

numpy.power(a,b)
#对ndarray(a)的每个元素进行b次幂运算

a.transpose()
a.T
#转置矩阵

numpy.std(a, axis=None, dtype=None, out=None, ddof=0, keepdims=<no value>)
#标准差,a:ndarray,axis轴(None或int或int组成的元组)

numpy.var(a, axis=None, dtype=None, out=None, ddof=0, keepdims=<no value>)
#标准差,a:ndarray,axis轴(None或int或int组成的元组)

a.reshape(1,2)
a.resize(1,2)
#reshape:有返回值,所谓有返回值,即不对原始多维数组进行修改;
#resize:无返回值,所谓有返回值,即会对原始多维数组进行修改;
#改变shape

numpy.flatten()
#将ndarray化为一维

numpy.vstack((a,b))
#上下结合

numpy.hstack((a,b))
#左右结合

a[a>0]
#取大于零的ndarray所有元素

numpy.linalg.inv(A)
#对ndarrayA求逆
numpy.linalg.pinv(A)
#对ndarrayA求伪逆

统计函数

顺序统计
amin(a[, axis, out, keepdims]) # 返回数组的最小值或沿轴的最小值。
amax(a[, axis, out, keepdims]) # # 返回数组的最大值或沿轴的最大值。
nanmin(a[, axis, out, keepdims]) # 返回数组的最小值或沿轴的最小值,忽略任何NAS。
nanmax(a[, axis, out, keepdims]) # 返回数组的最大值或沿轴方向的最大值,忽略任何NAS。
ptp(a[, axis, out]) # 沿轴的值的范围(最大值-最小值)。
percentile(a, q[, axis, out, …]) # 计算数据沿指定轴的第qth百分位数。
nanpercentile(a, q[, axis, out, …]) # 在忽略NaN值的情况下,沿着指定的轴计算数据的第qth百分位数。
amin(a[, axis, out, keepdims]) # 返回数组的最小值或沿轴的最小值。
amax(a[, axis, out, keepdims]) # # 返回数组的最大值或沿轴的最大值。
nanmin(a[, axis, out, keepdims]) # 返回数组的最小值或沿轴的最小值,忽略任何NAS。
nanmax(a[, axis, out, keepdims]) # 返回数组的最大值或沿轴方向的最大值,忽略任何NAS。
ptp(a[, axis, out]) # 沿轴的值的范围(最大值-最小值)。
percentile(a, q[, axis, out, …]) # 计算数据沿指定轴的第qth百分位数。
nanpercentile(a, q[, axis, out, …]) # 在忽略NaN值的情况下,沿着指定的轴计算数据的第qth百分位数。
平均数和差异
median(a[, axis, out, overwrite_input, keepdims]) # 沿指定轴计算中值。
average(a[, axis, weights, returned]) # 计算沿指定轴的加权平均。
mean(a[, axis, dtype, out, keepdims]) # 沿指定的轴计算算术平均值。
std(a[, axis, dtype, out, ddof, keepdims]) # 计算沿指定轴的标准偏差。
var(a[, axis, dtype, out, ddof, keepdims]) # 计算沿指定轴的方差。
nanmedian(a[, axis, out, overwrite_input, …]) # 在忽略NAS的情况下,沿指定的轴计算中值。
nanmean(a[, axis, dtype, out, keepdims]) # 计算沿指定轴的算术平均值,忽略NAS。
nanstd(a[, axis, dtype, out, ddof, keepdims]) # 计算指定轴上的标准偏差,而忽略NAS。
nanvar(a[, axis, dtype, out, ddof, keepdims]) # 计算指定轴上的方差,同时忽略NAS。
median(a[, axis, out, overwrite_input, keepdims]) # 沿指定轴计算中值。
average(a[, axis, weights, returned]) # 计算沿指定轴的加权平均。
mean(a[, axis, dtype, out, keepdims]) # 沿指定的轴计算算术平均值。
std(a[, axis, dtype, out, ddof, keepdims]) # 计算沿指定轴的标准偏差。
var(a[, axis, dtype, out, ddof, keepdims]) # 计算沿指定轴的方差。
nanmedian(a[, axis, out, overwrite_input, …]) # 在忽略NAS的情况下,沿指定的轴计算中值。
nanmean(a[, axis, dtype, out, keepdims]) # 计算沿指定轴的算术平均值,忽略NAS。
nanstd(a[, axis, dtype, out, ddof, keepdims]) # 计算指定轴上的标准偏差,而忽略NAS。
nanvar(a[, axis, dtype, out, ddof, keepdims]) # 计算指定轴上的方差,同时忽略NAS。
关联
corrcoef(x[, y, rowvar, bias, ddof]) # 返回Pearson乘积矩相关系数。
correlate(a, v[, mode]) # 返回两个一维序列的交叉关系。
cov(m[, y, rowvar, bias, ddof, fweights, …]) # 估计协方差矩阵,给定数据和权重。
corrcoef(x[, y, rowvar, bias, ddof]) # 返回Pearson乘积矩相关系数。
correlate(a, v[, mode]) # 返回两个一维序列的交叉关系。
cov(m[, y, rowvar, bias, ddof, fweights, …]) # 估计协方差矩阵,给定数据和权重。

矩阵(matrix)

matrix对象继承自ndarray,因此,它们具有相同的ndarrays属性和方法。

特性

  1. Matrix对象始终是二维的。 这具有深远意义,因为m.ravel()仍然是二维的(第一维中为1),项选择返回二维对象,因此序列行为与数组根本不同。
  2. 矩阵对象覆盖乘法是矩阵乘法。!!!! '*'和'**''这里是指矩阵乘法和矩阵的幂,如果需要逐元素的操作使用numpy.multiply和numpy.power
  3. 矩阵对象的默认array_priority是10.0,因此与ndarrays的混合操作总是产生矩阵。

构造方法

从字符串创建
>>> a=mat('1 2 3; 4 5 3')
>>> print (a*a.T).I
[[ 0.2924 -0.1345]
 [-0.1345  0.0819]]
>>> a=mat('1 2 3; 4 5 3')
>>> print (a*a.T).I
[[ 0.2924 -0.1345]
 [-0.1345  0.0819]]
从ndarray创建
>>> mat(random.rand(3,3)).T
matrix([[ 0.7699,  0.7922,  0.3294],
        [ 0.2792,  0.0101,  0.9219],
        [ 0.3398,  0.7571,  0.8197]])

属性

属性

描述

matrix.T

返回矩阵的转置

matrix.H

返回矩阵的共轭转置

matrix.I

返回矩阵的逆

matrix.A

返回矩阵的ndarray对象