numpy 常用操作
2017年02月10日 12:37:17 永永夜 阅读数:3526更多
所属专栏: Python 科学编程
版权声明:欢迎转载,但请务必注明原文出处及作者信息。 https://blog.csdn.net/Jerr__y/article/details/54968548
numpy提供了ndarray和matrix两种类型的数据,为我们进行科学运算提供了非常便捷的运算工具。相对来说,我觉得其实还是MATLAB对于矩阵运算的支持更加直观易操作,但是作为Python使用者,怎能不把numpy用熟用透呢。
在numpy中,同样一种操作可能提供了很多种不同的方式,具体怎么来实现完全是使用者个人习惯。对于和我一样的菜鸟,我觉得最好是从一开始就养成较好的操作习惯。
numpy的二维数组能够很好地实现矩阵的各种功能,而且比matrix要灵活,速度也更快(refer:numpy教程:矩阵matrix及其运算)。因此,在二者通用的情况下,我选择使用array来实现。
下面的内容主要是学习了numpy的教程之后,结合我自己在平时的使用中可能经常遇到的一些操作问题做一下总结,方便自己记住。一些比较少用的操作就先不管了,就算忘了再去查就好了。
numpy官方教程: https://docs.scipy.org/doc/numpy-dev/user/quickstart.html
numpy官方教程中文翻译: NumPy的详细教程
1. 创建数组和数组变形
import numpy as np
- 1
# 创建数组
a = np.array([1,2,3,4,5,6])
print a
# 直接给a.shape赋值是最简单的变形方式
a.shape = (2,3)
print '变形之后:'
print a
- 7
[1 2 3 4 5 6]
[[1 2 3]
[4 5 6]]
- 1
a.ravel() # 拉直数组
- 1
array([1, 2, 3, 4, 5, 6])
- 1
2.数组拼接
A = np.floor(np.random.randn(2,3) * 10)
print 'A:\n', A
B = np.floor(np.random.randn(2,3) * 10)
print 'B:\n', B
- 1
- 4
A:
[[ -2. 3. -10.]
[ 5. 4. 7.]]
B:
[[-14. -7. 3.]
[ 10. 6. -8.]]
- 1
- 2
- 3
- 4
- 5
- 6
# 按第一个轴拼接
print '按行拼接:'
print np.vstack([A,B])
# 按第二个轴拼接
print '按列拼接:'
print np.hstack([A,B])
- 1
- 6
按行拼接:
[[ -2. 3. -10.]
[ 5. 4. 7.]
[-14. -7. 3.]
[ 10. 6. -8.]]
按列拼接:
[[ -2. 3. -10. -14. -7. 3.]
[ 5. 4. 7. 10. 6. -8.]]
- 1
3. 基本操作和基本运算
np.exp(2)
- 1
7.3890560989306504
- 1
np.exp2(2)
- 1
4.0
- 1
np.sqrt(4)
- 1
2.0
- 1
np.sin([2,3])
- 1
array([ 0.90929743, 0.14112001])
- 1
np.log(2)
- 1
0.69314718055994529
- 1
np.log10(2)
- 1
0.3010299956639812
- 1
np.log2(2)
- 1
1.0
- 1
np.max([1,2,3,4])
- 1
4
- 1
4.二维数组完成矩阵操作
A = np.array([[1, 2], [-1, 4]])
B = np.array([[2, 0], [3, 4]])
print '对应元素想乘:'
print A * B
print '矩阵乘法:'
print np.dot(A, B) # 或者 A.dot(B)
- 1
- 2
- 3
- 4
- 5
- 6
对应元素想乘:
[[ 2 0]
[-3 16]]
矩阵乘法
[[ 8 8]
[10 16]]
- 1
- 2
- 3
- 4
- 5
- 6
# 线性代数
from numpy import linalg
- 1
- 2
# 求A的转置
print 'A的转置:'
print A.transpose()
# 求A的逆矩阵
print 'A的逆矩阵:'
print linalg.inv(A)
# 特征值和特征向量
eigenvalues, eigenvectors = linalg.eig(A)
print 'A 的特征值:'
print eigenvalues # 特征值
print 'A 的特征向量:'
print eigenvectors # 特征向量
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
A的转置:
[[ 1 -1]
[ 2 4]]
A的逆矩阵:
[[ 0.66666667 -0.33333333]
[ 0.16666667 0.16666667]]
A 的特征值:
[ 2. 3.]
A 的特征向量:
[[-0.89442719 -0.70710678]
[-0.4472136 -0.70710678]]
1 np.split():Parameters: ary :ndarray Arraytobedividedintosub-arrays. indices_or_sect...博文来自: 丑小鸭
Numpy:NumericalPython的简称使用工具:numpy语言:Python3主要特点:ndarray,快速,节省空间的多维数组,提供数组化的算数运算和高级的广播功能 使用标注数学函数对整个...博文来自: 醉意流年go的博客