numpy 库
ndarray : numpy 的关键
a = np.array([1,2,3])
# 轴
a.ndim
# 数组长度
a.size
# 数组的型
a.shape
# 类型
a.dtype
创建数组
a = np.array([1,2,3],[2,3,4])
b = np.array((1,2,3),(4,5,6))
c = np.array([1,2,3],(4,5,6))
d = np.zeros((3,3))
e = np.ones((3,3))
f = np.arange(3,14)
g = np.arange(0,12,3)
h = np.arange(0,12).reshape(3,4)
i = np.linspace(0,10,5)
j = np.random.random((3,5))
基本操作
算数运算符
# 对每个元素操作
a=np.array(4)
a+4
a*2
b=np.array(4,8)
a+b
a-b
a*np.sin(b)
a*np.sqrt(b)
# ++ --
自增自减
元素级(对每个元素起作用)
矩阵积
# 不是元素级别的
np.dot(A,B) != np.dot(B,A)
通用函数与聚合函数
# 通用函数
a=np.array(3,4)
np.sqrt(a)
np.log(a)
np.sin(a)
# 聚合函数
a.sum()
a.min()
a.max()
a.mean()
a.std()
切片操作
a=np.arange(3,4)
# 从第二个到第六个元素(=1 && < 5)
a[1:5]
# 每两个抽取一个
a[1:5:2]
# 起始位置 : 结束位置 : 切片间隔
a[::2]
a[:5:2]
a[:5:]
# 取某一行
a[0,:]
# 取某一列
a[:,0]
遍历
for i in a:
print(i)
for i in a.flat:
print(i)
np.apply_along_axis(func,axis=0,arr=A)
形状改变
# 改为2*2
a=arange(0,4).reshape(2,2)
# 改为一维数组
a.ravel()
# 转置
a.transpose()
数组的链接
#垂直入栈
np.vstack((A,B))
#水平入栈
np.hstack((A,B))
#多个数组之间的站操作
np.column_stack((a,b,c))
np.row_stack((a,b,c))
数组切分
A=np.arange(16).reshape((4,4))
# 按照列进行平分
[B,C]=np.hsplit(A,2)
# 按照行进行平分
[B,C=np.vsplit(A,2)
# split
传入数组作为参数:指定被切分部分索引,axis=1 列索引,axis=0 行索引
读取CSV
data = genfromtxt('data.csv',delimeter=',',names=True)
代码改变世界