Python:numpy模块最详细的教程(三)
素取指数函数,exex |
np.sqrt(arr) |
对numpy数组arr中每个元素开根号x??√x |
一元函数:abs, sqrt, exp, log, ceil, floor, rint, trunc, modf, isnan, isinf, cos, sin, tan
二元函数:add, substract, multiply, divide, power, mod, maximum, mininum
arr = np.array([[1, 2, 3, 4], [5, 6, 7, 8], [9, 10, 11, 12]])
print(arr)
[[ 1 2 3 4]
[ 5 6 7 8]
[ 9 10 11 12]]
#1. 对numpy数组的所有元素取正弦
print(np.sin(arr))
[[ 0.84147098 0.90929743 0.14112001 -0.7568025 ]
[-0.95892427 -0.2794155 0.6569866 0.98935825]
[ 0.41211849 -0.54402111 -0.99999021 -0.53657292]]
#2. 对numpy数组的所有元素开根号
print(np.sqrt(arr))
[[1. 1.41421356 1.73205081 2. ]
[2.23606798 2.44948974 2.64575131 2.82842712]
[3. 3.16227766 3.31662479 3.46410162]]
#3. 对numpy数组的所有元素取反正弦,如果元素不在定义域内,则会取nan值
print(np.arcsin(arr * 0.1))
[[0.10016742 0.20135792 0.30469265 0.41151685]
[0.52359878 0.64350111 0.7753975 0.92729522]
[1.11976951 1.57079633 nan nan]]
** /Applications/anaconda3/lib/python3.6/site-packages/ipykernel_launcher.py:2: RuntimeWarning: invalid value encountered in arcsin
#4. 判断矩阵元素中是否含有np.nan值
print(np.isnan(arr))
# [[False False False]
# [False False False]]
十二、numpy数组矩阵化
1 numpy数组的转置
numpy数组的转置,相当于numpy数组的行和列互换。
arr = np.array([[1, 2, 3], [4, 5, 6]])
print(arr)
[[1 2 3]
[4 5 6]]
print(arr.transpose())
[[1 4]
[2 5]
[3 6]]
print(arr.T)
[[1 4]
[2 5]
[3 6]]
2 numpy数组的逆
numpy数组行和列相同时,numpy数组才可逆。
arr = np.array([[1, 2, 3], [4, 5, 6], [9, 8, 9]])
print(arr)
[[1 2 3]
[4 5 6]
[9 8 9]]
print(np.linalg.inv(arr))
[[ 0.5 -1. 0.5 ]
[-3. 3. -1. ]
[ 2.16666667 -1.66666667 0.5 ]]
# 单位numpy数组的逆是单位numpy数组本身
arr = np.eye(3)
print(arr)
[[1. 0. 0.]
[0. 1. 0.]
[0. 0. 1.]]
print(np.linalg.inv(arr))
[[1. 0. 0.]
[0. 1. 0.]
[0. 0. 1.]]
十三、numpy数组数学和统计方法
方法 |
详解 |
sum |
求和 |
cumsum |
累加求和 |
mean |
求平均数 |
std |
求标准差 |
var |
求方差 |
min |
求最小值 |
max |
求最大值 |
argmin |
求最小值索引 |
argmax |
求最大值索引 |
sort 排序 |
|
1 最大最小值
arr = np.array([[1, 2, 3], [4, 5, 6], [7, 8, 9]])
print(arr)
[[1 2 3]
[4 5 6]
[7 8 9]]
#1. 获取numpy数组所有元素中的最大值
print(arr.max())
# 9
# Python学习交流群:711312441
#2. 获取numpy数组所有元素中的最小值
print(arr.min())
# 1
#3. 获取举着每一行的最大值
print(arr.max(axis=0))
# [7 8 9]
#4. 获取numpy数组每一列的最大值
print(arr.max(axis=1))
# [3 6 9]
#5. 获取numpy数组最大元素的索引位置
print(arr.argmax(axis=1))
# [2 2 2]
2 平均值
arr = np.array([[1, 2, 3], [4, 5, 6], [7, 8, 9]])
print(arr)
[[1 2 3]
[4 5 6]
[7 8 9]]
#1. 获取numpy数组所有元素的平均值
print(arr.mean())
# 5.0
#2. 获取numpy数组每一列的平均值
print(arr.mean(axis=0))
# [4. 5. 6.]
#3. 获取numpy数组每一行的平均值
print(arr.mean(axis=1))
# [2. 5. 8.]
3 方差
方差公式为
mean(|x?x.mean()|2)mean(|x?x.mean()|2)
其中x为numpy数组。
arr = np.array([[1, 2, 3], [4, 5, 6], [7, 8, 9]])
print(arr)
[[1 2 3]
[4 5 6]
[7 8 9]]
#1. 获取numpy数组所有元素的方差
print(arr.var())
# 6.666666666666667
#2. 获取numpy数组每一列的元素的方差
print(arr.var(axis=0))
# [6. 6. 6.]
#3. 获取numpy数组每一行的元素的方差
print(arr.var(axis=1))
# [0.66666667 0.66666667 0.66666667]
4 标准差
标准差公式为
mean|x?x.mean()|2?????????????????√=x.var()??????√mean|x?x.mean()|2=x.var()
arr = np.array([[1, 2, 3], [4, 5, 6], [7, 8, 9]])
print(arr)
[[1 2 3]
[4 5 6]
[7 8 9]]
# Python学习交流群:711312441
#1. 获取numpy数组所有元素的标准差
print(arr.std())
# 2.581988897471611
#2. 获取numpy数组每一列的标准差
print(arr.std(axis=0))
# [2.44948974 2.44948974 2.44948974]
#3. 获取numpy数组每一行的标准差
print(arr.std(axis=1))
[0.81649658 0.81649658 0.81649658]
5 中位数
arr = np.array([[1, 2, 3], [4, 5, 6], [7, 8, 9]])
print(a
|