入门numpy(80%-100%)【解读numpy官方文档】
作者:王大伟
Python爱好者社区唯一小编
博客:https://ask.hellobi.com/blog/wangdawei
点击上图即可限时半价购买课程
这个numpy连载拖了挺久了,今天终于要更新完了!!!之后咱们可视化走起~
ix_函数可以用于组合不同的向量,以获得每个的结果。 例如,如果要计算从每个向量a,b和c中获取的所有三元组的所有a + b * c:
import numpy as np
a = np.array([2,3,4,5])
b = np.array([8,5,4])
c = np.array([5,4,6,8,3])
ax,bx,cx = np.ix_(a,b,c)
ax
bx
cx
ax.shape, bx.shape, cx.shape
result = ax+bx*cx
result
注:通过函数将原来的一维数列组合都变成可以做某种运算的三维数组
注:两种等效的索引到三位数组的某元素
参阅结构化数组:https://docs.scipy.org/doc/numpy-dev/user/basics.rec.html#structured-arrays
基本的线性代数运算
有关更多信息,请参阅numpy文件夹中的linalg.py
import numpy as np
a = np.array([[1.0, 2.0], [3.0, 4.0]])
print(a)
注:创建一个矩阵a
a.transpose()
注:求a矩阵的转置
np.linalg.inv(a)
注:求a矩阵的逆矩阵
u = np.eye(2)
u
注:产生二阶单位矩阵
j = np.array([[0.0, -1.0], [1.0, 0.0]])
np.dot (j, j)
注:矩阵乘法
np.trace(u)
注:trace轨迹,这里指矩阵的迹,矩阵主对角元素之和
y = np.array([[5.], [7.]])
np.linalg.solve(a, y)
注:解形如ax=y的线性方程组所得的x
np.linalg.eig(j)
注:求j矩阵的特征值和特征向量
这里我们列出一些简短有用的提示。
“自动”整形
要更改数组的尺寸,可以省略其中一个尺寸,然后自动推导出:
a = np.arange(30)
a.shape = 2,-1,3
a.shape
注:将a数组变形,参数-1表示根据情况自动计算出值
a
注:打印a矩阵
我们如何从同样大小的行向量的列表中构造2维数组? 在MATLAB中,这很简单:如果x和y是相同长度的两个向量,那么只需要m = [x; y]。
在NumPy中,这可以通过函数column_stack,dstack,hstack和vstack来实现,具体取决于要进行堆叠的维度。
例如:
x = np.arange(0,10,2)
y = np.arange(5)
m = np.vstack([x,y])
m
注:vstack意为vertical stack按照竖直方向堆叠
xy = np.hstack([x,y])
xy
注:hstack意为horizontal stack按照竖直方向堆叠
学matlab的学者对照学习numpy参考:
https://docs.scipy.org/doc/numpy-dev/user/numpy-for-matlab-users.html
应用于数组的NumPy直方图函数返回一对向量:数组的直方图和bins的向量。
注意:matplotlib还具有构建与NumPy不同的直方图(称为hist,如在Matlab中)的功能。
主要区别在于pylab.hist自动绘制直方图,而numpy.histogram仅生成数据。
import numpy as np
import matplotlib.pyplot as plt
%matplotlib inline
# Build a vector of 10000 normal deviates with variance 0.5^2 and mean 2
mu, sigma = 2, 0.5
v = np.random.normal(mu,sigma,10000)
# Plot a normalized histogram with 50 bins
plt.hist(v, bins=50, normed=1) # matplotlib version (plot)
plt.show()
注:这是matplotlib的hist方法画直方图,随机产生正态分布(均值为2,标准差为0.5)数据,然后画图
注意:加上%matplotlib inline 可以使图画在jupyter notebook中,而不是单独弹窗出一幅图(感谢秦路老师当时为我解答这个困惑)
(n, bins) = np.histogram(v, bins=50, normed=True) # NumPy version (no plot)
plt.plot(.5*(bins[1:]+bins[:-1]), n)
plt.show()
注:numpy中的histogram方法生成数据,然后使用matplotlib的plot方法画图。
微课福利:Hellobi live |8月22日,利用 Python 建构金融数据分析平台
查看下图说明免费参加或者点击文末阅读原文参加
关注公众号,“Python爱好者社区”,回复“爬虫”即可获取崔老师爬虫免费学习视频。
为大家提供与Python相关的最新技术和资讯。
长按指纹 > 识别图中二维码 > 添加关注