numpy练习
import numpy
world_alcohol = numpy.genfromtxt("world_alcohol.txt", delimiter=",", dtype=str, skip_header=1)
#delimiter 为以“”中内容为分隔符
#type类型为字符 ,skip_header为跳过标题行
print(help(numpy.genfromtxt)) # 查询函数文档
print("="*50)
import numpy as np
# 输出函数帮助文档
print(help(np.array))
# 1.构建一个一维矩阵
vec = np.array([1, 2, 3, 4, 5])
print(vec)
# 2.构建一个二维矩阵
vec1 = np.array([[1, 2], [3, 4]])
matrix = np.array([[5, 10, 15], [20, 25, 30], [35, 40, 45]])
print(vec1)
print(matrix)
# 3.创建全为0、1的数组
zeros = np.zeros((2, 3))
one = np.ones((2,4))
# 4.输出矩阵的结构
print(matrix.shape)
print(zeros)
print(one)
# 5.修改矩阵的结构
print(zeros.reshape((3, 2)))
# 6.切片 区间前闭后开
print(vec[1:3])
# 7. 取矩阵的行、列
print(matrix[:, 2])
print(matrix[0:1, 0:2])
print("=" * 50)
# 8. 生成数组 numpy.arange(start, stop, step, dtype = None)
a = np.arange(12)
print(a)
a = a.reshape(3, 4)
# 9. 查询维度 几维矩阵
print(a.ndim)
print("=" * 50)
# 9.转换类型值
vec = np.array(["1", "2", "3"])
print(vec)
print(vec.dtype)
vec = vec.astype(float)
print(vec.dtype)
print(vec)
# 10. 进行求极值操作 向量.min() .sum() .max()
vec = np.array([1, 2, 3, 4, 5])
print(vec.max())
matrix = np.array([[5, 10, 15], [20, 25, 30], [35, 40, 45]])
# 11.axis=1 行操作 axis=0列操作
print(matrix.sum(axis=1))
print(matrix.sum(axis=0))
# 12.随机生成矩阵 [-1,1]区间
b = np.random.random((2, 3))
print(b)
# 13.给出起始、终点 和个数 自动求出步长
ran = np.linspace(0, 100, 50)
print(ran)
# 14.进行一些函数操作 sin()
print(np.sin(ran))
# 15.矩阵乘法 * 对应位置相乘 dot 矩阵乘法
A = np.array([[1, 1], [0, 1]])
B = np.array([[2, 0], [3, 4]])
print(A)
print("-" * 50)
print(B)
print(A*B)
print(A.dot(B))
print("=" * 50)
# 16.数学函数
c = np.arange(5)
print(np.exp(c))
print(np.sqrt(c))
# 17.向下取整 floor ravel 把矩阵转换为向量 .T
# 转置 reshape(3, -1) -1为让其自动算列向量的值
a = np.floor(10 * np.random.random((3, 4)))
print(a)
print(np.ravel(a))
a = a.reshape(2, 6)
print(a)
print(a.T)
print("=" * 50)
# 18.拼接矩阵 hstack横拼 2行4列 vstack 竖拼 4行2列
a = np.floor(10 * np.random.random((2, 2)))
b = np.floor(10 * np.random.random((2, 2)))
print(a)
print(b)
print(np.hstack((a, b)))
print(np.vstack((a, b)))
# 19.矩阵切分 hsplit(切分矩阵,几份) 切成2* 4横着切分 vsplit 竖着切分
a = np.floor(10 * np.random.random((2, 12)))
print(a)
print(np.hsplit(a, 3)) # 均匀切分
print(np.hsplit(a, (3, 4))) # 指定位置切两刀 分成三份
b = np.floor(10 * np.random.random((12, 2)))
print(b)
print(np.vsplit(b, 3))
# 20. 三种复制
# a,b 把a赋值给b 名字不同 但指向是一样的
b = a
# a c指向不同东西 但公用一堆值
c = a.view()
# 指向不一样 值也不一样
d = a.copy()
# 21 排序
data = np.sin(np.arange(20)).reshape(5,4)
print(data)
ind = data.argmax(axis=0) # 按列求最大值的索引
print(ind) # 索引值
# tile方法 在一个矩阵基础上扩展行数列数
a = np.arange(0, 40, 10)
b = np.tile(a, (3, 5)) # tile 表示进行 行和列的扩展 变成几倍
print(b)
a = np.array([[4, 3, 5], [1, 2, 1]])
#print a
b = np.sort(a, axis=1) # 按行进行排序
#print b
#b
#a.sort(axis=1)
#print a
a = np.array([4, 3, 1, 2])
j = np.argsort(a) # 排序后的索引值
print(j)
print(a[j]) # 将索引传入 输出