Python-Numpy多维数组 -- 算数运算, 统计函数

一、Numpy - 算数运算

1.用于执行算术运算(如add()subtract()multiply()divide())的输入数组必须具有相同的形状或符合数组广播规则。

demo

  1. import numpy as np
    a = np.arange(9, dtype = np.float_).reshape(3,3)
    print '第一个数组:'
    print a
    print '第二个数组:'
    b = np.array([10,10,10])
    print b
    print '两个数组相加:'
    print np.add(a,b)
    print '两个数组相减:'
    print np.subtract(a,b)
    print '两个数组相乘:'
    print np.multiply(a,b)
    print '两个数组相除:'
    print np.divide(a,b)
    输出如下:第一个数组:
    [[ 0. 1. 2.]
    [ 3. 4. 5.]
    [ 6. 7. 8.]]
    第二个数组:
    [10 10 10]
    两个数组相加:
    [[ 10. 11. 12.]
    [ 13. 14. 15.]
    [ 16. 17. 18.]]
    两个数组相减:
    [[-10. -9. -8.]
    [ -7. -6. -5.]
    [ -4. -3. -2.]]
    两个数组相乘:
    [[ 0. 10. 20.]
    [ 30. 40. 50.]
    [ 60. 70. 80.]]
    两个数组相除:
    [[ 0. 0.1 0.2]
    [ 0.3 0.4 0.5]
    [ 0.6 0.7 0.8]]

     

2.numpy.reciprocal()函数返回参数逐元素的倒数。 由于 Python 处理整数除法的方式,对于绝对值大于 1 的整数元素,结果始终为 0, 对于整数 0,则发出溢出警告。

demo

import numpy as np
a = np.array([0.25, 1.33, 1, 0, 100])
print '我们的数组是:'
print a
print '调用 reciprocal 函数:'
print np.reciprocal(a)
b = np.array([100], dtype = int)
print '第二个数组:'
print b
print '调用 reciprocal 函数:'
print np.reciprocal(b)
输出如下:
我们的数组是:
[ 0.25 1.33 1. 0. 100. ]
调用 reciprocal 函数:
main.py:9: RuntimeWarning: divide by zero encountered in reciprocal
print np.reciprocal(a)
[ 4. 0.7518797 1. inf 0.01 ]
第二个数组:[100]
调用 reciprocal 函数:[0]

3.numpy.power()此函数将第一个输入数组中的元素作为底数,计算它与第二个输入数组中相应元素的幂。

 

import numpy as np
a = np.array([10,100,1000])
print '我们的数组是;'
print a
print '调用 power 函数:'
print np.power(a,2)
print '第二个数组:'
b = np.array([1,2,3])
print b
print '再次调用 power 函数:'
print np.power(a,b)
输出如下:
我们的数组是;[ 10 100 1000]
调用 power 函数:[ 100 10000 1000000]
第二个数组:[1 2 3]
再次调用 power 函数:[ 10 10000 1000000000]

4.numpy.mod()此函数返回输入数组中相应元素的除法余数。 函数numpy.remainder()也产生相同的结果。

import numpy as np
a = np.array([10,20,30])
b = np.array([3,5,7])
print '第一个数组:'
print a
print '第二个数组:'
print b
print '调用 mod() 函数:'
print np.mod(a,b)
print '调用 remainder() 函数:'
print np.remainder(a,b)
输出如下:
第一个数组:[10 20 30]
第二个数组:[3 5 7]
调用 mod() 函数:[1 0 2]
调用 remainder() 函数:[1 0 2]

 

5.以下函数用于对含有复数的数组执行操作。

  • numpy.real() 返回复数类型参数的实部。

  • numpy.imag() 返回复数类型参数的虚部。

  • numpy.conj() 返回通过改变虚部的符号而获得的共轭复数。

  • numpy.angle() 返回复数参数的角度。 函数的参数是degree。 如果为true,返回的角度以角度制来表示,否则为以弧度制来表示。

  1.  

import numpy as np
a = np.array([-5.6j, 0.2j, 11. , 1+1j])
print '我们的数组是:'
print a
print '调用 real() 函数:'
print np.real(a)
print '调用 imag() 函数:'
print np.imag(a)
print '调用 conj() 函数:'
print np.conj(a)
print '调用 angle() 函数:'
print np.angle(a)
print '再次调用 angle() 函数(以角度制返回):'
print np.angle(a, deg = True)
输出如下:
我们的数组是:[ 0.-5.6j 0.+0.2j 11.+0.j 1.+1.j ]
调用 real() 函数:[ 0. 0. 11. 1.]
调用 imag() 函数:[-5.6 0.2 0. 1. ]
调用 conj() 函数:[ 0.+5.6j 0.-0.2j 11.-0.j 1.-1.j ]
调用 angle() 函数:[-1.57079633 1.57079633 0. 0.78539816]
再次调用 angle() 函数(以角度制返回):[-90. 90. 0. 45.]

二、Numpy - 统计函数

1.numpy.amin() 和 numpy.amax()

这些函数从给定数组中的元素沿指定轴返回最小值和最大值。

demo

import numpy as np
a = np.array([[3,7,5],[8,4,3],[2,4,9]])
print '我们的数组是:'
print a
print '调用 amin() 函数:'
print np.amin(a,1)
print '再次调用 amin() 函数:'
print np.amin(a,0)
print '调用 amax() 函数:'
print np.amax(a)
print '再次调用 amax() 函数:'
print np.amax(a, axis = 0)
输出如下:
我们的数组是:
[[3 7 5]
[8 4 3]
[2 4 9]]
调用 amin() 函数:[3 3 2]
再次调用 amin() 函数:[2 4 3]
调用 amax() 函数:9
再次调用 amax() 函数:[8 7 9]

2.numpy.ptp()函数返回沿轴的值的范围(最大值 - 最小值)。

 

import numpy as np
a = np.array([[3,7,5],[8,4,3],[2,4,9]])
print '我们的数组是:'
print a
print '调用 ptp() 函数:'
print np.ptp(a)
print '沿轴 1 调用 ptp() 函数:'
print np.ptp(a, axis = 1)
print '沿轴 0 调用 ptp() 函数:'
print np.ptp(a, axis = 0)
输出如下:
我们的数组是:
[[3 7 5]
[8 4 3]
[2 4 9]]
调用 ptp() 函数:7
沿轴 1 调用 ptp() 函数:[4 5 7]
沿轴 0 调用 ptp() 函数:[6 3 6]

3.numpy.percentile()百分位数是统计中使用的度量,表示小于这个值得观察值占某个百分比。 函数numpy.percentile()接受以下参数。numpy.percentile(a, q, axis)

 

序号参数及描述
1.a 输入数组
2.q 要计算的百分位数,在 0 ~ 100 之间
3.axis 沿着它计算百分位数的轴

demo

import numpy as np
a = np.array([[30,40,70],[80,20,10],[50,90,60]])
print '我们的数组是:'
print a
print '调用 percentile() 函数:'
print np.percentile(a,50)
print '沿轴 1 调用 percentile() 函数:'
print np.percentile(a,50, axis = 1)
print '沿轴 0 调用 percentile() 函数:'
print np.percentile(a,50, axis = 0)
输出如下:
我们的数组是:
[[30 40 70]
[80 20 10]
[50 90 60]]
调用 percentile() 函数:50.0
沿轴 1 调用 percentile() 函数:[ 40. 20. 60.]
沿轴 0 调用 percentile() 函数:[ 50. 40. 60.]

4.numpy.median()中值定义为将数据样本的上半部分与下半部分分开的值。 numpy.median()函数的用法如下面的程序所示。

 

demo

import numpy as np
a = np.array([[30,65,70],[80,95,10],[50,90,60]])
print '我们的数组是:'
print a
print '调用 median() 函数:'
print np.median(a)
print '沿轴 0 调用 median() 函数:'
print np.median(a, axis = 0)
print '沿轴 1 调用 median() 函数:'
print np.median(a, axis = 1)
输出如下:
我们的数组是:
[[30 65 70]
[80 95 10]
[50 90 60]]
调用 median() 函数:65.0
沿轴 0 调用 median() 函数:[ 50. 90. 60.]
沿轴 1 调用 median() 函数:[ 65. 80. 60.]

5.numpy.mean()算术平均值是沿轴的元素的总和除以元素的数量。 numpy.mean()函数返回数组中元素的算术平均值。 如果提供了轴,则沿其计算。

 

demo

import numpy as np
a = np.array([[1,2,3],[3,4,5],[4,5,6]])
print '我们的数组是:'
print a
print '调用 mean() 函数:'
print np.mean(a)
print '沿轴 0 调用 mean() 函数:'
print np.mean(a, axis = 0)
print '沿轴 1 调用 mean() 函数:'
print np.mean(a, axis = 1)
输出如下:
我们的数组是:
[[1 2 3]
[3 4 5]
[4 5 6]]
调用 mean() 函数:3.66666666667
沿轴 0 调用 mean() 函数:[ 2.66666667 3.66666667 4.66666667]
沿轴 1 调用 mean() 函数:[ 2. 4. 5.]

6.numpy.average()加权平均值是由每个分量乘以反映其重要性的因子得到的平均值。 numpy.average()函数根据在另一个数组中给出的各自的权重计算数组中元素的加权平均值。 该函数可以接受一个轴参数。 如果没有指定轴,则数组会被展开。

考虑数组[1,2,3,4]和相应的权重[4,3,2,1],通过将相应元素的乘积相加,并将和除以权重的和,来计算加权平均值。

加权平均值 = (1*4+2*3+3*2+4*1)/(4+3+2+1)

demo

import numpy as np
a = np.array([1,2,3,4])
print '我们的数组是:'
print a
print '调用 average() 函数:'
print np.average(a)
# 不指定权重时相当于 mean 函数
wts = np.array([4,3,2,1])
print '再次调用 average() 函数:'
print np.average(a,weights = wts)
# 如果 returned 参数设为 true,则返回权重的和
print '权重的和:'
print np.average([1,2,3, 4],weights = [4,3,2,1], returned = True)
输出如下:
我们的数组是:[1 2 3 4]
调用 average() 函数:2.5
再次调用 average() 函数:2.0
权重的和:(2.0, 10.0)

7.在多维数组中,可以指定用于计算的轴。

demo

import numpy as np
a = np.arange(6).reshape(3,2)
print '我们的数组是:'
print a
print '修改后的数组:'
wt = np.array([3,5])
print np.average(a, axis = 1, weights = wt)
print '修改后的数组:'
print np.average(a, axis = 1, weights = wt, returned = True)
输出如下:
我们的数组是:
[[0 1]
[2 3]
[4 5]]
修改后的数组:[ 0.625 2.625 4.625]
修改后的数组:(array([ 0.625, 2.625, 4.625]), array([ 8., 8., 8.]))

8.标准差:标准差是与均值的偏差的平方的平均值的平方根。 标准差公式如下:

 

std = sqrt(mean((x - x.mean())**2))

如果数组是[1,2,3,4],则其平均值为2.5。 因此,差的平方是[2.25,0.25,0.25,2.25],并且其平均值的平方根除以4,即sqrt(5/4)1.1180339887498949

demo

import numpy as np
print np.std([1,2,3,4])
输出如下:
1.1180339887498949

9.方差:偏差的平方的平均值,即mean((x - x.mean())** 2)。 换句话说,标准差是方差的平方根。

 

demo

import numpy as np
print np.var([1,2,3,4])
输出如下:
1.25

 

  • 6
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值