本文主要是介绍【NumPy】 之常见运算(min、max、mean、sum、exp、sqrt、sort、乘法、点积、对象拼接/切分),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
____tz_zs
之前把 numpy 资料写在了同一篇博客里,发现非常难以查阅,于是按功能切分开来。
https://blog.csdn.net/tz_zs/article/details/73929778
https://blog.csdn.net/tz_zs/article/details/80773612
https://blog.csdn.net/tz_zs/article/details/80775256
一、基础数学运算
- ndarray.min() / np.min(ndarray)
- ndarray.max() / np.max(ndarray)
- ndarray.mean() / np.mean(ndarray)
- ndarray.sum() / np.sum(ndarray)
- np.exp()
- np.sqrt() 开根号
- np.sort() 排序
- np.argsort() 排序的索引
.
# -*- coding: utf-8 -*-
"""
@author: tz_zsndarray.min()
ndarray.max()
ndarray.mean()
ndarray.sum()
ndarray.argmax() 最大值的索引
np.exp()
np.sqrt() 开根号
np.floor() 地板值
np.sort() 排序
np.argsort() 排序的索引
"""import numpy as npn = np.array([[5, 10, 15],[20, 25, 30],[35, 40, 45]])
print(n.min()) # 5
print(n.max()) # 5
print(n.mean()) # 25.0
print(n.sum()) # 225
# 指定所操作的维度,axis=0 按列,axis=1 按行
print(n.sum(axis=0)) # [60 75 90]
print(n.sum(axis=1)) # [ 30 75 120]print('-' * 20)
n1 = np.arange(3)
print(n1)
print(np.exp(n1))
print(np.sqrt(n1))
'''
[0 1 2]
[ 1. 2.71828183 7.3890561 ]
[ 0. 1. 1.41421356]
'''# np.floor()
print('-' * 20)
n2 = np.random.random((2, 3)) * 10
n3 = np.floor(n2)
print(n2)
print(n3)
'''
[[ 6.46353334 8.29433697 4.78221334][ 2.95695022 3.80006904 3.00482368]]
[[ 6. 8. 4.][ 2. 3. 3.]]
'''# np.sort() 排序
print('-' * 20)
a = np.array([[4, 3, 5], [1, 6, 1]])
print(a)
'''
[[4 3 5][1 6 1]]
'''
b = np.sort(a, axis=1)
print(b)
'''
[[3 4 5][1 1 6]]
'''
a.sort(axis=1)
print(a)
'''
[[3 4 5][1 1 6]]
'''# np.argsort() 排序的索引
print('-' * 20)
a2 = np.array([4, 3, 1, 2])
a2_argsort = np.argsort(a2)
print(a2_argsort) # [2 3 1 0]
print(a2[a2_argsort]) # [1 2 3 4]
print(np.argsort(a2_argsort)) # [3 2 0 1] 体现的是对应的元素在array中的位置
·
二、矩阵元素相乘
将对应位置的元素相乘。
- 使用 * 连接两个 np矩阵,如n1 * n2
- 或者 np.multiply(n1, n2)
import numpy as npn1 = np.array([[1, 1],[0, 1]])
n2 = np.array([[2, 0],[3, 4]])
print(n1)
print(n2)
'''
[[1 1][0 1]]
[[2 0][3 4]]
'''print(n1 * n2)
'''
[[2 0][0 4]]
'''# np.multiply(x1, x2, /, out=None, *, where=True, casting='same_kind', order='K', dtype=None, subok=True[, signature, extobj])
print(np.multiply(n1, n2))
"""
[[2 0][0 4]]
"""
print(np.multiply(n1, 3))
print(np.multiply(2, 3))
"""
[[3 3][0 3]]
6
"""
·
三、矩阵乘法
点积 dot ,同线性代数中矩阵乘法的定义
np.dot(a, b, out=None)
a : 第一个参数,b : 第二个参数,out : 控制输出的参数
此函数对于一维矩阵,计算的是点积(向量乘法),对于二维矩阵,计算矩阵乘积。
np.matmul(a, b, out=None) 与 np.dot 功能一样。
官方文档:numpy.dot numpy.matmul
#!/usr/bin/python2.7
# -*- coding:utf-8 -*-"""
n1.dot(n2)
np.dot(n1, n2)
np.matmul(n1, n2)
"""
import numpy as npn1 = np.array([[1, 1],[0, 1]])
n2 = np.array([[2, 0],[3, 4]])
print(n1)
print(n2)
'''
[[1 1][0 1]]
[[2 0][3 4]]
'''print(n1.dot(n2))
print(np.dot(n1, n2))
'''
[[5 4][3 4]]
[[5 4][3 4]]
'''print(np.matmul(n1, n2))
"""
[[5 4][3 4]]
"""
.
四、拼接/切分 ndarray
拼接 ndarray 对象
- np.hstack() # 横着拼接
- np.vstack() # 竖着拼接
切分 ndarray 对象
- np.vsplit() # 竖着切
# -*- coding: utf-8 -*-
"""
@author: tz_zs拼接 ndarray 对象
np.hstack() # 横着拼接
np.vstack() # 竖着拼接切分 ndarray 对象
np.vsplit() 竖着切
"""import numpy as npn1 = np.array([[10, 11],[12, 13]])
n2 = np.array([[20, 21],[22, 23]])hstack = np.hstack((n1, n2)) # 横着拼接
print(hstack)
'''
[[10 11 20 21][12 13 22 23]]
'''vstack = np.vstack((n1, n2)) # 竖着拼接
print(vstack)
'''
[[10 11][12 13][20 21][22 23]]
'''# np.hsplit() 横着切
n3 = np.floor(10 * np.random.random((2, 12)))
print(n3)
'''
[[ 6. 1. 1. 9. 9. 5. 2. 3. 4. 4. 0. 2.][ 6. 3. 7. 7. 7. 9. 0. 2. 3. 0. 4. 8.]]
'''
print(np.hsplit(n3, 3))
'''
[array([[ 6., 1., 1., 9.],[ 6., 3., 7., 7.]]), array([[ 9., 5., 2., 3.],[ 7., 9., 0., 2.]]), array([[ 4., 4., 0., 2.],[ 3., 0., 4., 8.]])]
'''
print(np.hsplit(n3, (3, 5))) # 指定切分位置
'''
[array([[ 6., 1., 1.],[ 6., 3., 7.]]), array([[ 9., 9.],[ 7., 7.]]), array([[ 5., 2., 3., 4., 4., 0., 2.],[ 9., 0., 2., 3., 0., 4., 8.]])]
'''# np.vsplit() 竖着切
n4 = n3.T
print(n4)
'''
[[ 6. 6.][ 1. 3.][ 1. 7.][ 9. 7.][ 9. 7.][ 5. 9.][ 2. 0.][ 3. 2.][ 4. 3.][ 4. 0.][ 0. 4.][ 2. 8.]]
'''
print(np.vsplit(n4, 3))
'''
[array([[ 6., 6.],[ 1., 3.],[ 1., 7.],[ 9., 7.]]),
array([[ 9., 7.],[ 5., 9.],[ 2., 0.],[ 3., 2.]]),
array([[ 4., 3.],[ 4., 0.],[ 0., 4.],[ 2., 8.]])]
'''
·
这篇关于【NumPy】 之常见运算(min、max、mean、sum、exp、sqrt、sort、乘法、点积、对象拼接/切分)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!