赞
踩
Numpy数组的基础运算为矩阵与数字的运算。数组的算术运算是针对数组内部每个独立元素的运算。
import numpy as np
a = np.arange(5)
print('原数组:', a)
print('加运算:', a+3)
print('减运算:', a-3)
print('乘运算:', a*3)
print('除运算:', a/3)
输出结果如下:
原数组:[0 1 2 3 4]
加运算:[3 4 5 6 7]
减运算:[-3 -2 -1 0 1]
乘运算:[ 0 3 6 9 12]
除运算:[0. 0.33333333 0.66666667 1. 1.33333333]
Numpy作为一个功能强大的科学计算包,其内置了大量用于科学计算的函数。
import numpy as np
a = np.arange(1,5)
print('原数组 :', a)
print('二阶乘方:', a**2)
print('开方运算:', np.sqrt(a))
print('对数运算:', np.log(a))
输出结果如下:
原数组 :[1 2 3 4]
二阶乘方:[ 1 4 9 16]
开方运算:[1. 1.41421356 1.73205081 2. ]
对数运算:[0. 0.69314718 1.09861229 1.38629436]
import numpy as np
a = np.arange(1,5)
print('原数组 :', a)
print('正弦化 :', np.sin(a))
print('余弦化 :', np.cos(a))
print('正切化 :', np.tan(a))
print('反正弦化:', np.arcsin(a))
print('反余弦化:', np.arccos(a))
print('反正切化:', np.arctan(a))
输出结果如下:
原数组 :[1 2 3 4]
正弦化 :[ 0.84147098 0.90929743 0.14112001 -0.7568025 ]
余弦化 :[ 0.54030231 -0.41614684 -0.9899925 -0.65364362]
正切化 :[ 1.55740772 -2.18503986 -0.14254654 1.15782128]
反正弦化:[1.57079633 nan nan nan]
反余弦化:[ 0. nan nan nan]
反正切化:[0.78539816 1.10714872 1.24904577 1.32581766]
其中数据nan用于表示空缺数据,等同于None。此处存在nan数据是由于三角函数的定义域问题导致。
Numpy数组能够进行布尔运算,通过对各个元素进行布尔条件判断从而返回对应的布尔值。此外,Numpy库内置了一些用于统计运算的函数,用于计算最大值、最小值、中位数、方差等统计量。
import numpy as np
a = np.arange(1,5)
b = a >= 3
print('数组a的值:', a)
print('数组b的值:', b)
输出结果如下:
数组a的值:[1 2 3 4]
数组b的值:[False False True True]
通常,将布尔运算后得到的新数组作为角标传给原数组,从而筛选出符合条件的数据。
import numpy as np
a = np.arange(1,5)
b = a[a > 3]
print('数组a的值:', a)
print('符合条件的元素:', b)
输出结果如下:
数组a的值: [1 2 3 4]
符合条件的元素: [4]
import numpy as np
a = np.array([
[1, 2, 3],
[4, 5, 6],
[7, 8, 9]
])
print('求和 :', np.sum(a))
print('按行求和:', np.sum(a, axis=0))
print('按列求和:', np.sum(a, axis=1))
print('求最大值:', np.max(a))
print('求最小值:', np.min(a))
print('求平均值:', np.mean(a))
print('求中位数:', np.median(a))
print('求方差 :', np.var(a))
print('求标准差:', np.std(a))
输出结果如下:
求和 : 45
按行求和: [12 15 18]
按列求和: [ 6 15 24]
求最大值: 9
求最小值: 1
求平均值: 5.0
求中位数: 5.0
求方差 : 6.666666666666667
求标准差: 2.581988897471611
除了上述两种运算,Numpy库还支持矩阵运算。这使得它能够实现诸多线性代数的计算需求,从而奠定了它重要的地位。
矩阵的加减运算符合线性代数中的规定,两个形状相同的ndarray数组能够进行矩阵加减运算。
import numpy as np
a = np.array([
[1, 2, 3],
[4, 5, 6],
])
b = np.array([
[1, 2, 3],
[4, 5, 6],
])
print('矩阵加法:\n', a+b)
print('矩阵减法:\n', a-b)
输出结果如下:
矩阵加法:
[[ 2 4 6]
[ 8 10 12]]
矩阵减法:
[[0 0 0]
[0 0 0]]
特别的,如果两个运算对象中,有某一个对象为一维数组,则两者进行运算时,将按照维度进行独立的计算。
import numpy as np
a = np.array([
[1, 2, 3],
[4, 5, 6],
])
b = np.array([
[1, 2, 3],
])
print('矩阵加法:\n', a+b)
print('矩阵减法:\n', a-b)
输出结果如下:
矩阵加法:
[[2 4 6]
[5 7 9]]
矩阵减法:
[[0 0 0]
[3 3 3]]
所谓的矩阵转置是指:将矩阵的行和列互相代替;所谓的矩阵变形则是指:在不改变矩阵包含的元素个数(即ndarray的size属性)的条件下,改变矩阵的行数(维度)和列数。
import numpy as np
a = np.array([
[1, 2, 3],
[4, 5, 6],
])
print('矩阵转置:\n', a.T)
print('矩阵变形:\n', a.reshape(1,a.size//1))
输出结果如下
矩阵转置:
[[1 4]
[2 5]
[3 6]]
矩阵变形:
[[1 2 3 4 5 6]]
矩阵的乘法符合线性代数中的定义。在Numpy库中,采用函数**dot()**进行矩阵的乘法运算。
import numpy as np
a = np.array([
[1, 2, 3],
[4, 5, 6],
])
print('矩阵乘法:\n', a.dot(a.T))
输出结果如下:
矩阵乘法:
[[14 32]
[32 77]]
设 A 是数域上的一个n阶矩阵,若在相同数域上存在另一个n阶矩阵 B ,使得: AB=BA=E ,则我们称B是A的逆矩阵,而A则被称为可逆矩阵。注:E为单位矩阵。
在Numpy库中,用如下方式能够求出矩阵的逆矩阵:
import numpy as np
a = np.eye(3)
print('原矩阵:\n', a)
print('逆矩阵:\n', np.linalg.inv(a))
输出结果如下:
原矩阵:
[[1. 0. 0.]
[0. 1. 0.]
[0. 0. 1.]]
逆矩阵:
[[1. 0. 0.]
[0. 1. 0.]
[0. 0. 1.]]
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。