赞
踩
1.Numrical Python,数值的Python,应用于数值分析领域的Python语言工具;
2.Numpy是一个开源的科学计算库;
3.Numpy弥补了作为通用编程语言的Python在数值计算方面,能力弱,速度慢的不足;
4.Numpy拥有丰富的数学函数、强大的多维数组和优异的运算性能;
5.Numpy与Scipy、scikit、matplotlib等其它科学计算库可以很好地协调工作;
6.Numpy可以取代matlab等工具,允许用户进行快速开发的同时完成交互式的原型设计。
参考代码:https://github.com/hilqiqi0/AI/blob/master/5.DS/code/numpy/vector.py
numpy中的多维数组是numpy.ndarray类类型的对象,可用于表示数据结构中的任意维度的数组;
numpy.arange(起始, 终止, 步长)->一维数组,首元素就是起始值,尾元素为终止值之前的最后一个元素,步长即每次递增的公差。缺省起始值为0,缺省步长为1。
numpy.array(任何可被解释为数组的容器)
表示元素的数据类型。通过dtype参数和astype()方法可以指定和修改元素的数据类型。
表示数组的维度:(高维度数, ..., 低维度数)
参考代码:https://github.com/hilqiqi0/AI/blob/master/5.DS/code/numpy/array.py
数组[索引]
数组[行索引][列索引]
数组[页索引][行索引][列索引]
数组[页索引, 行索引, 列索引]
参考代码:https://github.com/hilqiqi0/AI/blob/master/5.DS/code/numpy/index.py
bool_ 1字节布尔型,True(1)/False(0)
int8 1字节有符号整型,-128 - 127
int16 2字节有符号整型
int32 4字节有符号整型
int64 8字节有符号整型
uint8 1字节无符号整型,0 - 255
uint16 2字节无符号整型
uint32 4字节无符号整型
uint64 8字节无符号整型
float16 2字节浮点型
float32 4字节浮点型
float64 8字节浮点型
complex64 8字节复数型
complex128 16字节复数型
str_ 字符串型
通过dtype将多个相同或者不同的numpy内置类型组合成某种复合类型,用于数组元素的数据类型。除了使用内置类型的全称以外还可以通过类型编码字符串简化类型的说明。
numpy.int8 -> i1
numpy.int16 -> i2
numpy.uint32 -> u4
numpy.float64 -> f8
numpy.complex128 -> c16
对于多字节整数可以加上字节序前缀:
= - 处理器系统默认; | < - 小端字节序,低数位低地址; | > - 大端字节序,低数位高地址。 |
98 0x1234 | L H 0x34 0x12 | L H 0x12 0x34 |
numpy.str_ -> U字符数
numpy.bool_ -> b
参考代码:https://github.com/hilqiqi0/AI/blob/master/5.DS/code/numpy/dtype.py
数组[起始:终止:步长, 起始:终止:步长, ...]
缺省起始:首(步长为正)、尾(步长为负)
缺省终止:尾后(步长为正)、首前(步长为负)
缺省步长:1
靠近端部的一个或几个连续的维度使用缺省切片,可以用"..."表示。
参考代码:https://github.com/hilqiqi0/AI/blob/master/5.DS/code/numpy/slice.py
1)视图变维:针对一个数组对象获取其不同维度的视图
数组.reshape(新维度)->数组的新维度视图
数组.ravel()->数组的一维视图
2)复制变维:针对一个数组对象获取其不同维度的副本
数组.flatten()->数组的一维副本
3)就地变维
数组.shape = (新维度)
数组.resize(新维度)
4)视图转置
数组.transpose()->数组的转置视图
数组.T: 转置视图属性
至少二维数组才能转置。
参考代码:https://github.com/hilqiqi0/AI/blob/master/5.DS/code/numpy/reshape.py
1)垂直组合/拆分
numpy.vstack((上, 下))
numpy.vsplit(数组, 份数)->子数组集合
2)水平组合/拆分
numpy.hstack((左, 右))
numpy.hsplit(数组, 份数)->子数组集合
3)深度组合/拆分
numpy.dstack((前, 后))
numpy.dsplit(数组, 份数)->子数组集合
4)行/列组合
numpy.row_stack((上, 下))
numpy.column_stack((左, 右))
参考代码:https://github.com/hilqiqi0/AI/blob/master/5.DS/code/numpy/stack.py
dtype - 元素类型
shape - 数组维度
T - 转置视图
ndim - 维数
size - 元素数, 仅对一维数组等价于len()
itemsize - 元素字节数
nbytes - 总字节数 = size x itemsize
flat - 扁平迭代器
real - 实部数组
imag - 虚部数组
数组.tolist()->列表对象
参考代码:https://github.com/hilqiqi0/AI/blob/master/5.DS/code/numpy/attr.py
mp.plot(水平坐标数组, 垂直坐标数组)
x: [1 2 3 4]
y: [5 6 7 8]
参考代码:https://github.com/hilqiqi0/AI/blob/master/5.DS/code/numpy/plt1.py
mp.plot(..., linestyle=线型, linewidth=线宽,color=颜色)
参考代码:https://github.com/hilqiqi0/AI/blob/master/5.DS/code/numpy/plt2.py
mp.xlim(左边界, 右边界)
mp.ylim(底边界, 顶边界)
参考代码:https://github.com/hilqiqi0/AI/blob/master/5.DS/code/numpy/plt3.py
mp.xticks(刻度位置数组, 刻度文本数组)
mp.yticks(刻度位置数组, 刻度文本数组)
参考代码:https://github.com/hilqiqi0/AI/blob/master/5.DS/code/numpy/plt4.py
ax = mp.gca() # 获取当前坐标轴
ax.spines['left'].set_position(('data', 0))
ax.spines['left'].set_color(颜色)
参考代码:https://github.com/hilqiqi0/AI/blob/master/5.DS/code/numpy/plt5.py
mp.plot(..., label=图例文本)
mp.legend(loc='upper left')
参考代码:https://github.com/hilqiqi0/AI/blob/master/5.DS/code/numpy/plt6.py
mp.scatter(水平坐标数组, 垂直坐标数组,marker=点型, s=大小, edgecolor=勾边色,facecolor=填充色, zorder=Z序)
参考代码:https://github.com/hilqiqi0/AI/blob/master/5.DS/code/numpy/plt7.py
mp.annotate(备注文本,xy=目标位置,xycoords=目标坐标系,xytext=文本位置,textcoords=文本坐标系,fontsize=字体大小,arrowprops=箭头属性)
参考代码:https://github.com/hilqiqi0/AI/blob/master/5.DS/code/numpy/plt8.py
mp.figure(图形对象名, figsize=窗口大小,dpi=分辨率, facecolor=颜色)
参考代码:https://github.com/hilqiqi0/AI/blob/master/5.DS/code/numpy/fig.py
mp.subplot(行数, 列数, 图号)
mp.subplot(2, 3, 1)
mp.subplot(231)
参考代码:https://github.com/hilqiqi0/AI/blob/master/5.DS/code/numpy/sub1.py
import matplotlib.gridspec as mg
gs = mg.GridSpec(行数, 列数) # 栅格布局器
mp.subplot(gs[行, 列])
参考代码:https://github.com/hilqiqi0/AI/blob/master/5.DS/code/numpy/sub2.py
mp.axes([左下角水平坐标, 左下角垂直坐标, 宽度, 高度])
其中所有的尺寸参数都是相对比例。
参考代码:https://github.com/hilqiqi0/AI/blob/master/5.DS/code/numpy/sub3.py
定位器对象 = mp.xxxLocator(...)
ax = mp.gca()
ax.xaxis.set_major_locator(定位器对象) # 主刻度
ax.xaxis.set_minor_locator(定位器对象) # 次刻度
参考代码:https://github.com/hilqiqi0/AI/blob/master/5.DS/code/numpy/tick.py
参考代码:https://github.com/hilqiqi0/AI/blob/master/5.DS/code/numpy/scatter.py
mp.fill_between(水平坐标数组, 垂直坐标起点数组,
垂直坐标终点数组, 条件, color=颜色,
alpha=透明度)
参考代码:https://github.com/hilqiqi0/AI/blob/master/5.DS/code/numpy/fill.py
mp.bar(水平坐标数组, 高度数组, ec=边缘颜色,
fc=填充颜色, label=标签文本,
alpha=透明度)
参考代码:https://github.com/hilqiqi0/AI/blob/master/5.DS/code/numpy/bar.py
mp.contour(x, y, z, 线数, colors=颜色,
linewidths=线宽)
mp.contourf(x, y, z, 线数, cmap=颜色映射)
参考代码:https://github.com/hilqiqi0/AI/blob/master/5.DS/code/numpy/cntr.py
mp.imshow(矩阵, cmap=颜色映射,origin=垂直轴方向)
参考代码:https://github.com/hilqiqi0/AI/blob/master/5.DS/code/numpy/hot.py
mp.pie(值列表, 间隙列表, 标签, 颜色列表, 格式串,shadow=是否带阴影, startangle=起始角度)
参考代码:https://github.com/hilqiqi0/AI/blob/master/5.DS/code/numpy/pie.py
from mpl_toolkits.mplot3d import axes3d
ax = mp.gca(projection='3d')
ax.plot_surface(x, y, z, rstride=行距,cstride=列距, cmap=颜色映射)
ax.plot_wireframe(x, y, z, rstride=行距,cstride=列距, linewidth=线宽, color=颜色)
参考代码:https://github.com/hilqiqi0/AI/blob/master/5.DS/code/numpy/wf.py
参考代码:https://github.com/hilqiqi0/AI/blob/master/5.DS/code/numpy/sf.py
ax.scatter(x, y, z, s=大小, c=颜色, marker=点型)
参考代码:https://github.com/hilqiqi0/AI/blob/master/5.DS/code/numpy/s3.py
mp.gca(projection='polar')
mp.plot ...
mp.scatter ...
x, y
| |
v v
极角 极径
参考代码:https://github.com/hilqiqi0/AI/blob/master/5.DS/code/numpy/polar.py
mp.semilogy(...)
参考代码:https://github.com/hilqiqi0/AI/blob/master/5.DS/code/numpy/log.py
import matplotlib.animation as ma
def 更新函数 (顺序号):
更新画面帧
ma.FuncAnimation(图形对象, 更新函数,interval=间隔时间(毫秒))
--------------------------------------------
def 更新函数 (生成值):
更新画面帧
def 生成器():
for ...:
产生新的数据
yield 生成值
ma.FuncAnimation(图形对象, 更新函数,生成器, interval=间隔时间(毫秒))
参考代码:https://github.com/hilqiqi0/AI/blob/master/5.DS/code/numpy/bub.py
参考代码:https://github.com/hilqiqi0/AI/blob/master/5.DS/code/numpy/sig.py
position size growth color
float float float float float float float float
0
1
2
.
.
.99
numpy.loadtxt(文件名,delimiter=分隔符,usecols=选择列,unpack=是否解包,dtype=目标类型,converters=转换器)
-> 二维数组(unpack=False)/列一维数组集(unpack=True)
numpy.savetxt(文件名,二维数组,delimiter=分隔符,fmt=格式)
参考代码:https://github.com/hilqiqi0/AI/blob/master/5.DS/code/numpy/txt.py
参考代码:https://github.com/hilqiqi0/AI/blob/master/5.DS/code/numpy/k.py
样本:S = [s1, s2, ..., sn]
算数平均值:m = (s1+s2+...+sn)/n
numpy.mean(样本数组)->算数平均值
参考代码:https://github.com/hilqiqi0/AI/blob/master/5.DS/code/numpy/mean.py
样本:S = [s1, s2, ..., sn]
权重:W=[w1,w2,...,wn]
加权平均值:
a = (s1w1+s2w2+...+snwn)/(w1+w2+...+wn)
numpy.average(样本数组, weights=权重数组)
->加权平均值
成交量加权平均价格(VWAP)
参考代码:https://github.com/hilqiqi0/AI/blob/master/5.DS/code/numpy/vwap.py
时间加权平均价格(TWAP)
参考代码:https://github.com/hilqiqi0/AI/blob/master/5.DS/code/numpy/twap.py
获取一个数组中的最大/最小元素
a:
9 7 5
3 1 8
6 6 1
numpy.max(a)->9
numpy.min(a)->1
在两个数组的对应元素之间构造最大值/最小值数组
b:
6 1 9
7 1 7
4 4 5
numpy.maximum(a, b)->
9 7 9
7 1 8
6 6 5
参考代码:https://github.com/hilqiqi0/AI/blob/master/5.DS/code/numpy/max.py
价格波动范围=最高的最高价-最低的最低价
参考代码:https://github.com/hilqiqi0/AI/blob/master/5.DS/code/numpy/range.py
极差,一个数组最大值和最小值之差
numpy.ptp(数组)->数组.max()-数组.min()
价格波动幅度=某一种价格的极差
参考代码:https://github.com/hilqiqi0/AI/blob/master/5.DS/code/numpy/spread.py
将多个样本按照大小顺序排列,居于中间位置的元素即为中位数。
12 23 45 67 89
^
12 23 45 67
\___/
34
^
A: 样本集
L: 样本数
M = (A[(L-1)/2]+A[L/2])/2
numpy.median(数组)->中位数
参考代码:https://github.com/hilqiqi0/AI/blob/master/5.DS/code/numpy/med.py
样本:S = [s1, s2, ..., sn]
均值:m = (s1+s2+...+sn)/n
离差:D = [s1-m, s2-m, ..., sn-m]
方差:v = ((s1-m)^2+(s2-m)^2+...(sn-m)^2)/n
标准差:std = sqrt(v) (方均根离差)
numpy.std(数组, ddof=非自由度)->标准差
总体方差和总体标准差:.../n
样本方差和样本标准差:.../(n-1)
10
50
25 25
参考代码:https://github.com/hilqiqi0/AI/blob/master/5.DS/code/numpy/var.py
数组[关系表达式]:关系表达式的值是一个布尔型数组,其中为True的元素对应于数组中满足关系表达式的元素,
以上下标运算的值就是从数组中拣选与布尔数组中为True的元素相对应的元素。
np.where(关系表达式)->数组中满足关系表达式的元素的下标数组。
np.take(数组,下标数组)->数组中由下标数组所标识的元素集合。
参考代码:https://github.com/hilqiqi0/AI/blob/master/5.DS/code/numpy/week.py
np.apply_along_axis(函数, 轴向, 高维数组)
在高维数组中,沿着指定轴向,提起低维子数组,作为参数传递给特定的函数,并将其返回值按照同样的轴向组成成新的数组返回给调用者。
轴向:
二维,0-行方向,1-列方向
三维,0-页方向,1-行方向,2-列方向
参考代码:https://github.com/hilqiqi0/AI/blob/master/5.DS/code/numpy/axis.py
参考代码:https://github.com/hilqiqi0/AI/blob/master/5.DS/code/numpy/sum.py
a: [1 2 3 4 5] - 被卷积数组
b: [6 7 8] - 卷积核数组
c = a (x) b = [6 19 40 61 82 67 40] - full
[19 40 61 82 67] - same
[40 61 82] - valid
6 19 40 61 82 67 40
0 0 1 2 3 4 5 0 0
8 7 6
8 7 6
8 7 6
8 7 6
8 7 6
8 7 6
8 7 6
numpy.convolve(a, b, 'full'/'same'/'valid')
参考代码:https://github.com/hilqiqi0/AI/blob/master/5.DS/code/numpy/conv.py
参考代码:https://github.com/hilqiqi0/AI/blob/master/5.DS/code/numpy/ma.py
[a b c d e] [A B C D E]
(aA+bB+cC+dD+eE)/(A+B+C+D+E)
(aA+bB+cC+dD+eE)/S
aA/S+bB/S+cC/S+dD/S+eE/S
[A/S B/S C/S D/S E/S]
中轨:移动均线
上轨:中轨 + 2x标准差
下轨:中轨 - 2x标准差
参考代码:https://github.com/hilqiqi0/AI/blob/master/5.DS/code/numpy/bb.py
1 2 3 4
60 70 80 90
y = kx+b
a b c d e f ? ?
d = aA+bB+cC \
e = bA+cB+dC > A B C
f = cA+dB+eC /
? = dA+eB+fC
/ a b c\ / A \ / d \
| b c d | X | B | = | e |
\ c d e / \ C / \ f /
--------- ----- -----
a x b
= numpy.linalg.lstsq(a, b)
bx=>?
参考代码:https://github.com/hilqiqi0/AI/blob/master/5.DS/code/numpy/line.py
kx + b = y
kx1 + b = y1
kx2 + b = y2
...
kxn +b = yn
/ x1 1 \ / k \ / y1 \
| x2 1 | X | b | = | y2 |
| ... | \ / | ... |
\ xn 1 / \ yn /
-------- ---- ------
a x b
= np.linalg.lstsq(a, b)
参考代码:https://github.com/hilqiqi0/AI/blob/master/5.DS/code/numpy/trend.py
1)ndarray.clip(min=最小值, max=最大值)
将调用数组中小于min的元素设置为min,大于max的元素设置为max。
2)ndarray.compress(条件)
返回调用数组中满足给定条件的元素。
3)ndarray.prod()
返回调用数组中各元素的乘积。
ndarray.cumprod()
返回调用数组中各元素计算累乘的过程数组。
参考代码:https://github.com/hilqiqi0/AI/blob/master/5.DS/code/numpy/ndarr.py
样本:
a = [a1, a2, ..., an]
b = [b1, b2, ..., bn]
均值:
ave(a) = (a1+a2+...+an)/n
ave(b) = (b1+b2+...+bn)/n
离差:
dev(a) = [a1, a2, ..., an] - ave(a)
dev(b) = [b1, b2, ..., bn] - ave(b)
方差:
var(a) = ave(dev(a)dev(a))
var(b) = ave(dev(b)dev(b))
标准差:
std(a) = sqrt(var(a))
std(b) = sqrt(var(b))
协方差:
cov(a,b) = ave(dev(a)dev(b))
cov(b,a) = ave(dev(b)dev(a))
相关性系数:
cov(a,b)/std(a)std(b)
cov(b,a)/std(b)std(a)
[-1, 1]:正负表示了相关性方向为正或反,绝对值表示相关性强弱,越大越强,越小越弱,0表示不相关。
相关性矩阵:
/ var(a)/std(a)std(a)=1 cov(a,b)/std(a)std(b) \
| |
\ cov(b,a)/std(b)std(a) var(b)/std(b)std(b)=1 /
numpy.corrcoef(a, b)->相关性矩阵
参考代码:https://github.com/hilqiqi0/AI/blob/master/5.DS/code/numpy/corr.py
用一个无穷级数表示一个可微函数。实际上任何可微的函数,总可以用一个N次多项式函数来近似,而比N次幂更高阶的部分可以作为无穷小量而被忽略不计。
f(x) = p0x^n + p1x^n-1 + p2x^n-2 + ... + pn
y0 = f(x0)
y1 = f(x1)
y2 = f(x2)
...
yn = f(xn)
numpy.ployfit(自变量数组, 函数值数组, 最高次幂(n))
->[p0, p1, ..., pn]
numpy.polyval([p0, p1, ..., pn], 自变量数组)->函数值数组
numpy.roots([p0, p1, ..., pn])->多项式方程的根
y = 3x^2+4x+1
y' = 6x+4
y''= 6
numpy.polyder([p0, p1, ..., pn])->导函数系数数组
参考代码:https://github.com/hilqiqi0/AI/blob/master/5.DS/code/numpy/poly.py
a: [10 -20 30 0 40 -50 -60 0 70]
numpy.sign(a)->[1 -1 1 0 1 -1 -1 0 1]
净额成交量(OBV)
numpy.piecewise(被判断数组, [条件1, 条件2, ...],[标志1, 标志2, ...])->满足每个条件的标志数组
参考代码:https://github.com/hilqiqi0/AI/blob/master/5.DS/code/numpy/obv.py
def 标量函数(标量参数1, 标量参数2, ...):
...
return 标量返回值1, 标量返回值2, ...
np.vectorize(标量函数)->矢量函数
矢量函数(矢量参数1, 矢量参数2, ...)
->矢量返回值1, 矢量返回值2, ...
参考代码:https://github.com/hilqiqi0/AI/blob/master/5.DS/code/numpy/vec.py
参考代码:https://github.com/hilqiqi0/AI/blob/master/5.DS/code/numpy/sim.py
卷积降噪->曲线拟合->特征值
消除随机 获得数学 反映业务
噪声的干 模型 特征
扰
参考代码:https://github.com/hilqiqi0/AI/blob/master/5.DS/code/numpy/smr.py
y = f(x) -> y1 = f(x1)
y = g(x) -> y1 = g(x1)
f(x1) = g(x1)
f(x1)-g(x1)=0
f(x)-g(x)=0的根就是x1
np.polysub(p1, p2)->p3
np.roots(p3)->x1
ndarray->matrix
numpy.matrix(可被解释为矩阵的二维容器,copy=[True]/False)->矩阵对象
1 2 3
4 5 6
'1 2 3; 4 5 6'
numpy.mat(可被解释为矩阵的二维容器)
数据共享,相当于copy=False的matrix()
numpy.bmat('A B; C D')
A: 1 2
3 4
B: 5 6
7 8
C: 9 10
11 12
D: 13 14
15 16
1 2 5 6
3 4 7 8
9 10 13 14
11 12 15 16
T - 转置
I - 逆
A x B = E 1 0 0
0 1 0
0 0 1
B = A.I
a = np.array([
[1, 2],
[3, 4]])
b = np.array([
[5, 6],
[7, 8]])
c = a * b
5 12
21 32
a = np.mat([
[1, 2],
[3, 4]])
b = np.mat([
[5, 6],
[7, 8]])
c = a * b
19 22
43 50
参考代码:https://github.com/hilqiqi0/AI/blob/master/5.DS/code/numpy/mat.py
A D
B E
C F
a b c m n
d e f o p
m = aA+bB+cC
n = aD+bE+cF
o = dA+eB+fC
p = dD+eE+fF
a b c
d e f
A D m n o
B E p q r
C F s t u
m = Aa+Dd
n = Ab+De
...
numpy.frompyfunc(标量函数, 参数个数, 返回值个数)
->numpy.ufunc类型的函数对象
ufunc函数对象(矢量参数, ...)->矢量返回值, ...
参考代码:https://github.com/hilqiqi0/AI/blob/master/5.DS/code/numpy/vec2.py
reduce - 累加
accumulate - 累加过程
reduceat - 在指定位置累加
outer - 外和
参考代码:https://github.com/hilqiqi0/AI/blob/master/5.DS/code/numpy/add.py
A.真除
[5 5 -5 -5]<真除>[2 -2 2 -2]=[2.5 -2.5 -2.5 2.5]
numpy.true_divide()
numpy.divide()
/
B.地板除
[5 5 -5 -5]<地板除>[2 -2 2 -2]=[2 -3 -3 2]
numpy.floor_divide()
//
C.天花板除
[5 5 -5 -5]<天花板除>[2 -2 2 -2]=[3 -2 -2 3]
D.截断除
[5 5 -5 -5]<截断除>[2 -2 2 -2]=[2 -2 -2 2]
参考代码:https://github.com/hilqiqi0/AI/blob/master/5.DS/code/numpy/div.py
被除数<除以>除数=商...余数
除数x商+余数=被除数
地板余数:做地板除所得到的余数
[5 5 -5 -5]<地板除>[2 -2 2 -2]=[2 -3 -3 2]...[1 -1 1 -1]
numpy.remainder()
numpy.mod()
%
截断余数:做截断除所得到的余数
[5 5 -5 -5]<截断除>[2 -2 2 -2]=[2 -2 -2 2]...[1 1 -1 -1]
numpy.fmod()
参考代码:https://github.com/hilqiqi0/AI/blob/master/5.DS/code/numpy/mod.py
参考代码:https://github.com/hilqiqi0/AI/blob/master/5.DS/code/numpy/fibo.py
1 1 1 1 1 1
1 0 1 0 1 0
1 1 2 1 3 2 5 3
1 0 1 1 2 1 3 2 ...
f1f2 f3 f4 f5 fn
F^2 3 4 n-1
x = Asin(at+pi/2)
y = Bsin(bt)
参考代码:https://github.com/hilqiqi0/AI/blob/master/5.DS/code/numpy/lissa.py
4 sin((2k-1)t)
--- x --------------
pi 2k-1
k=1,2,3
参考代码:https://github.com/hilqiqi0/AI/blob/master/5.DS/code/numpy/squr.py
A.异或:^/__xor__/bitwise_xor
1 ^ 0 = 1
1 ^ 1 = 0
0 ^ 0 = 0
0 ^ 1 = 1
if a^b < 0 then a和b异号
B.与:&/__and__/bitwise_and
1 & 0 = 0
1 & 1 = 1
0 & 0 = 0
0 & 1 = 0
1 2^0 00000001 -1 -> 00000000
2 2^1 00000010 -1 -> 00000001
4 2^2 00000100 -1 -> 00000011
8 2^3 00001000 -1 -> 00000111
16 2^4 00010000 -1 -> 00001111
\___&___/
|
0
if a & (a-1) == 0 then a是2的幂
参考代码:https://github.com/hilqiqi0/AI/blob/master/5.DS/code/numpy/bit.py
C.移位:<</__lshift__/left_shift (乘2)
>>/__rshift__/right_shift (除2)
在线性代数中,矩阵A与其逆矩阵A^-1的乘积是一个单位矩阵I。
使用numpy.linalg.inv()函数求矩阵的逆矩阵,要求必须是方阵,即行列数相等的矩阵。
参考代码:https://github.com/hilqiqi0/AI/blob/master/5.DS/code/numpy/inv.py
/ x-2y+z=0
| 2y-8z-8=0
\ -4x+5y+9z+9=0
x-7z-8=0
5x-10y+5z=0
-8x+10y+18z+18=0
-3x+23z+18=0
3x-21z-24=0
2z-6=0 -> z = 3
x = 21+8 = 29
29 -2y + 3 = 0 -> y = 16
/ 1x + -2y + 1z = 0
| 0x + 2y + -8z = 8
\ -4x + 5y + 9z = -9
/ 1 -2 1 \ / x \ / 0 \
| 0 2 -8 | X | y | = | 8 |
\ -4 5 9 / \ z / \ -9 /
----------- ----- ------
a x b
= numpy.linalg.lstsq(a, b)[0]
= numpy.linalg.solve(a, b)
参考代码:https://github.com/hilqiqi0/AI/blob/master/5.DS/code/numpy/solve.py
对于n阶方阵A,如果存在数a和非零n维向量x,使得Ax=ax,则称a是矩阵A的一个特征值,x是矩阵A属于特征值a的特征向量。
numpy.linalg.eig(A) -> a, x
a: 1 2
| |
v v
x: 1 2
3 4
5 6
参考代码:https://github.com/hilqiqi0/AI/blob/master/5.DS/code/numpy/eig.py
对于一个满足特定条件的矩阵M,可以被分解为三个矩阵的乘积,M=USV,其中U和V都是正交矩阵,即UU^T=I,VV^T=I
,S矩阵除主对角线以外的元素均为0,主对角线上的元素被称为矩阵M的奇异值。
numpy.linalg.svd(M)-> U, S主对角线上的元素, V
参考代码:https://github.com/hilqiqi0/AI/blob/master/5.DS/code/numpy/svd.py
参考代码:https://github.com/hilqiqi0/AI/blob/master/5.DS/code/numpy/pinv.py
a b
c d ad-bc
a b c
d e f
g h i
a e f - b d f + c d e
h i g i g h
a(ei-gh)-b(di-fg)+c(dh-eg)
numpy.linalg.det(方阵)->行列式的值
参考代码:https://github.com/hilqiqi0/AI/blob/master/5.DS/code/numpy/det.py
s=F(t) -> (A/P, fai) = G(f)
y = Asin(wx+fai)
w1 -> A1, f1
w2 -> A2, f2
...
(A, fai) = f(w)
参考代码:https://github.com/hilqiqi0/AI/blob/master/5.DS/code/numpy/fft.py
参考代码:https://github.com/hilqiqi0/AI/blob/master/5.DS/code/numpy/filter.py
numpy.random.binomial(n, p, size)
->包含size个随机数的数组,其中每个随机数来自n次尝试中的成功次数,每次尝试成功的概率为p。
猜硬币游戏:初始筹码1000,每轮猜9次,猜对5次或5次以上为赢,筹码加一,否则为输,筹码减一。模拟10000轮,记录筹码数的变化。binomial(9, 0.5, 10000)
参考代码:https://github.com/hilqiqi0/AI/blob/master/5.DS/code/numpy/bi.py
numpy.random.hypergeometric(ngood, nbad,
nsample, size)->包含size个随机数的数组,其中每个随机数来自随机抽取nsample个样本中好样本的个数,总样本中共有ngood个好样本,nbad个坏样本。
摸球球游戏:将25个好球和1个坏球放在一起,每轮摸出3个球,全为好球加1分,若有坏球则减6分。模拟100轮,记录分值的变化。hypergeometric(25, 1, 3, 100)
参考代码:https://github.com/hilqiqi0/AI/blob/master/5.DS/code/numpy/hyper.py
numpy.random.normal(size)->包含size个随机数的数组,其中每个随机数服从标准正态分布规律,即平均值为0,标准差为1的正态分布。
[1 1 2 1 1 2 2 2 5 1 2 3 ... 10 10]
[1, 3] 20
[4, 6] 60
[7, 10] 40
参考代码:https://github.com/hilqiqi0/AI/blob/master/5.DS/code/numpy/norm.py
间接:获取排序样本的下标。
0 1 2 3 4 5 6 7 8
原始序列:8 2 3 1 7 4 6 5 9
直接排序:1 2 3 4 5 6 7 8 9
间接排序:3 1 2 5 7 6 4 0 8
姓名:张三 李四 王五 赵六 陈七
成绩:90 70 50 80 60
0 1 2 3 4
2 4 1 3 0
年龄:20 30 30 20 40
3 0 2 1 4
numpy.lexsort((参考序列, 待排序列))->索引序列
numpy.sort_complex(复数数组)->按实部的升序排列,实部相同的参考虚部的升序
参考代码:https://github.com/hilqiqi0/AI/blob/master/5.DS/code/numpy/sort.py
numpy.xxx
max/min
argmax/argmin
nanmax/nanmin
nanargmax/nanargmin
---------------------------
max - 最大值
min - 最小值
arg - 间接,下标
nan - 忽略无效值
参考代码:https://github.com/hilqiqi0/AI/blob/master/5.DS/code/numpy/nan.py
有序序列:[1, 2, 4, 5, 6, 8, 9]
被插序列:[7, 3]
将被插序列插入到有序序列的什么位置,结果还是有序的?
numpy.searchsorted(有序序列, 被插序列)->插入位置
numpy.insert(有序序列, 插入位置, 被插序列)->插入结果
参考代码:https://github.com/hilqiqi0/AI/blob/master/5.DS/code/numpy/insert.py
y = f(x)
/ b
| f(x)dx
/ a
import scipy.integrate as si
def f(x):
y = ... x ...
return y
si.quad(f, a, b)[0] -> 定积分值
参考代码:https://github.com/hilqiqi0/AI/blob/master/5.DS/code/numpy/integ.py
import scipy.interpolate as si
si.interp1d(离散样本水平坐标,离散样本垂直坐标,
kind=插值器种类)->一维插值器对象
一维插值器对象(插值样本水平坐标)->插值样本垂直坐标
参考代码:https://github.com/hilqiqi0/AI/blob/master/5.DS/code/numpy/inter.py
1)绘制K线图
import mpl_finance as mf
mf.candlestick_ohlc(坐标图对象, 日期和开高低收价格数组,K线实体部分宽度(0-1), 阳线颜色, 阴线颜色)
参考代码:https://github.com/hilqiqi0/AI/blob/master/5.DS/code/numpy/k (2).py
2)终值和现值
参考代码:https://github.com/hilqiqi0/AI/blob/master/5.DS/code/numpy/fin.py
matplotlib颜色:https://matplotlib.org/examples/color/colormaps_reference.html
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。