add()
,subtract()
,multiply()
和divide()
)的输入数组必须具有相同的形状或符合数组广播规则。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,则发出溢出警告。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]
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]
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]
numpy.real()
返回复数类型参数的实部。
numpy.imag()
返回复数类型参数的虚部。
numpy.conj()
返回通过改变虚部的符号而获得的共轭复数。
numpy.angle()
返回复数参数的角度。 函数的参数是degree
。 如果为true
,返回的角度以角度制来表示,否则为以弧度制来表示。
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.]
1.numpy.amin()
和 numpy.amax()
这些函数从给定数组中的元素沿指定轴返回最小值和最大值。
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]
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]
numpy.percentile()
接受以下参数。numpy.percentile(a, q, axis)
序号 | 参数及描述 |
---|---|
1. | a 输入数组 |
2. | q 要计算的百分位数,在 0 ~ 100 之间 |
3. | axis 沿着它计算百分位数的轴 |
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.]
numpy.median()
函数的用法如下面的程序所示。
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.]
numpy.mean()
函数返回数组中元素的算术平均值。 如果提供了轴,则沿其计算。
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)
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)
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.]))
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
。
import numpy as np
print np.std([1,2,3,4])
输出如下:
1.1180339887498949
mean((x - x.mean())** 2)
。 换句话说,标准差是方差的平方根。
import numpy as np
print np.var([1,2,3,4])
输出如下:
1.25