博主为一个想入ML的大一学生。最近在学python的numpy,pandas,matplotlib和tkinter这些第三方模块。
其中numpy,pandas是ML必备库,matplotlib则能让数据过程结果可视化,tkinter则可以编写RL中的环境,相当于简易的openAI。
import numpy as np
# 1 numpy属性
array = np.array([[1, 2, 3], [2, 3, 4]])
print(array)
print('number of dim:', array.ndim) # 维度
print('shape:', array.shape) # 形状
print('size:', array.size) # 元素数量
# 2 numpy的创建array
a = np.array([2, 3, 4], dtype=np.int)
print(a.dtype)
a = np.zeros((3, 4)) # 全为0的矩阵
np.ones((3, 4), dtype=np.int16) # 全为1的矩阵
np.empty((3, 4)) # 空矩阵
np.eye(3) # 单位矩阵
np.arange(12).reshape((3, 4))
np.arange(10, 20, 2) # (开始值,终值,步长)
np.linspace(1, 10, 5) # (开始值,终值,元素个数)
# 3 numpy的基础运算1
a = np.array([10, 20, 30, 40])
b = np.arange(4)
print(a*b) # 逐个相乘
print(np.dot(a, b)) # 矩阵乘法 等价于 print(a.dot(b))
print(b**2)
c = 10*np.sin(a)
print(b < 3)
d = np.random.random((2, 4)) # (0,1)之间的随机数字
np.sum(d)
np.min(d, axis=0) # axis=0 列向下索引
np.max(d, axis=1) # axis=1 行向下索引
# 4 numpy的基础运算2
a = np.arange(14, 2, -1).reshape((3, 4))
np.argmax(a) # 最大值索引
np.argmin(a) # 最小值索引
np.mean(a) # 求平均值 等价于 a.mean()
np.median(a) # 求中位数
np.cumsum(a) # 累加
np.diff(a) # 累差
np.nonzero(a) # 输出非0的数的行和列
np.sort(a) # 排序
np.transpose(a) # 矩阵转置 等价于 a.T
np.clip(a, 5, 9) # 限制上下限
# 5 numpy的索引
A = np.arange(3, 15).reshape((3, 4))
print(A[1, 1:2])
for row in A: # 迭代行
print(row)
for column in A.T: # 迭代列
print(column)
print(A.flatten()) # A.flatten()返回一个array
for item in A.flat: # A.flat是一个迭代器
print(item)
# 6 numpy的array合并
A = np.array([1, 1, 1])
B = np.array([2, 2, 2])
np.vstack((A, B)) # 垂直合并
np.hstack((A, B)) # 水平合并
print(A[np.newaxis, :]) # 行增加维度
print(A[:, np.newaxis]) # 列增加维度
C = np.concatenate((A, B, A), axis=0)
# 7 numpy的array分割
A = np.arange(12).reshape((3, 4))
np.split(A, 3, axis=0) # 纵向分割 等价于 np.vsplit(A, 3)
np.split(A, 2, axis=1) # 横向分割 等价于 np.hsplit(A, 2)
np.array_split(A, 3, axis=1) # 不等分割
# 8 numpy的copy和deep copy
a = np.arange(4)
b = a # a,b指向一处 np.arange(4)计数器加一
print(b is a) # True
b = a.copy() # deep copy
博主学识浅薄,有错误的地方请大家多多见谅并指正!