Numpy
特点:
- 数组ndarray数据结构存储,数据地址是连续的--------快
- 支持并行化运算(向量运算)
- 底层实现使用了大量的C语言和BLAS(总之很高级)
- 众多机器学习框架和基础库
生成范围o~1的随机500行,504列数据
import numpy as np
stock_day_rise = np.random.normal(0,1,(500,504))
shape()返回(行,列)数的元祖
T 表示数组的转置
条件赋值,与复合条件赋值
stock_day_rise[stock_day_rise < 0] = 0 # 小于0的赋值为0
heihei = np.where(np.logical_and(stock_day_rise >0,stock_day_rise < 1),0,1) # 大于0的赋值为0,小于1的赋值为1
数组相乘的条件(a * b)
shape对应位要么相同,要么一方为1
A可以和以下其他所有的数组相乘:
import numpy as np
A = np.random.normal(0,1,(5,4))
b = np.random.randint(5,23,(5,4))
c = np.random.randint(5,23,(5,1))
d = np.random.randint(5,23,(1,4))
e = np.random.randint(5,23,(1,1))
f = np.random.randint(5,23,(4,23,7,5,1))
s1 = A * b
s2 = A * c
s3 = A * d
s4 = A * e
s5 = A * f
矩阵
矩阵是内部数据类型相同的二维数组
矩阵乘法和数组乘法规则不一样,且方法也不一样
矩阵乘法
( M 行 ,N 列 )* ( N 行 ,L 列 )
np,mat(a) 数组转矩阵
np.matmul(a,b) 矩阵乘法
import numpy as np
A = np.random.normal(0,1,(5,4))
g = np.random.randint(5,10,(4,7))
print(type(A)) # <class 'numpy.ndarray'>
a = np.mat(A)
print(type(a)) # <class 'numpy.matrixlib.defmatrix.matrix'>
g = np.mat(g)
ag = np.matmul(a,g)
print(ag)
print(ag.shape) # (5, 7)
数组/矩阵 切分与合并
import numpy as np
a = np.random.randint(1,5,(2,2))
b = np.random.normal(0,1,(2,2))
aa = a[0:1,0:2] # 逗号前表示行切片,逗号后表示列切片
bb = b[1:2,0:2]
# print(aa)
c = np.concatenate([aa, bb], axis=0) # axis = 0 表示行合并
print(c)
[[ 1. 4. ]
[-1.15576414 -0.57434214]]
d = np.hstack([a,b]) # horizontal 水平的
e = np.vstack([a,b]) # vertical 垂直的
print(d)
[[ 1. 3. -0.8578937 -1.38945041]
[ 3. 3. 0.08307616 0.59907079]]
print("*"*20)
print(e)
[[ 1. 3. ]
[ 3. 3. ]
[-0.8578937 -1.38945041]
[ 0.08307616 0.59907079]]
f,g,h,i = np.split(e, 4, axis=0) # 行分割,分四行
print(f)
[[2. 4.]]
IO操作 Numpy不适合做数据读取,数据读写使用Pandas
Pandas
- 以numpy为基础,运算性能高
- 基于matplotlib,能够简便绘图
- 独特的数据结构
- 专用于数据挖掘和机器学习的库
- 用于处理几个GB,最大1~2T的中小数据量
Pandas 三大数据结构
-
Series(一维数组)
-
DateFrame(二维数组)
-
Panel(三维数组,很少用)
-
行,index,axis = 0
-
列,columns, axis = 1