python-numpy
Posted dean0731
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了python-numpy相关的知识,希望对你有一定的参考价值。
# 常用库numpy
import numpy as np array1 = np.array([1,2,3,4]) print(array1) # [1 2 3 4] array2 = np.array([ [1,2,6,9], [3,4,8,9], [3,5,9,9], [3,5,7,9], ]) print(array2) """ [[1 2] [3 4]] """ print(array1.shape) # (4,) 显示列的数量 print(array2.shape) # (2,2) 显示行,列 print(array1.dtype) # int32 print(array2.dtype) # float64 字符串类型是S1 类型 array2.astype(float) # 含有一个浮点就是浮点,含有一个字符就是字符类型 print(array2==2) """ [[False True] [False False]] """ print(array2.min()) # 返回矩阵最小值 # ================================= # 从文本数据获取数据 逗号分开,按照字符类型, 返回 记录组成的矩阵 # np.genfromtxt("path",delimiter=",",dtype=str) # 从矩阵中取值 x[m,n] # ========================== # 矩阵切片 x[:,0:2] 获取矩阵的所有行,0-2列 print(array2) vec = array2==9 print(vec) array2[vec]=100 print(array2[vec]) # [9 9 9 9 9] 显示了矩阵中所有的 # ======================================================================================== (array1==10) & (array2==5) # 返回矩阵, 符合 以前学过的 或,与 # 常用函数 print(array2.sum(axis=1)) # [109 115 208 115] 每行的总和 print(array2.sum(axis=0)) # [ 10 16 121 400] 每列的总和 matrix = np.arange(12) # [ 0 1 2 3 4 5 6 7 8 9 10 11] print(matrix) print(matrix.reshape(3,4)) # 转为3行 2列矩阵,注意元素个数不能多不能少 # 空矩阵 kong = np.zeros((3,4)) # 创建3行4列全为0的矩阵 float类型 print(kong) # 指定值的矩阵 defau = np.ones((2,3,4),dtype=np.int) # 三维 3行 4列, 2 个 int 类型 print(defau) # 从10开始 30 步长为5 np.arange(10,30,5) # [10,15,20,25] 不包含30 # 随机模块 np.random.random((2,3)) # 两行三列 -1 到 1之间的 # 在区间内随机取值 np.linspace(0,9,20) # 0到9之间随机20个值, 包含0,9 # 对于shape 相同的 # 就是对应位置相减 # 对应位置相乘(A*B) shape不变 # 对于shape不同 # 如矩阵减去1 表示所有位置减1 # array1**2 表示所有元素平方 # A.dot(B)或np.dot(A,B) 真正的矩阵乘法,需要符合 可相乘的条件 # e的n次幂 np.exp(n) # 舍弃小数 print(np.floor([1,2.4,0.736,-987,15])) # [ 1. 2. 0. -987. 15.] 变为浮点整数 # matrix.ravel() 矩阵 拉平 按照第一行接 第二行方式 # array2.shape = (8,2) 修改矩阵的形状 # array2.reshape(8,-1) 与上边功能相同 8行 此时 列数自动计算 # np.hstack(矩阵1,矩阵2) 横着拼接 ,注意行相同 # np.vstack(矩阵1,矩阵2) 垂直拼接,注意列相同 # np.hspilt(矩阵,n) 水平切分 分为n份 # np.hspilt(矩阵,(m,n)) 水平切分 从m列后切开,从n列后切开 # 垂直切开与水平类似 # ============================== # np 中的向量,矩阵都是引用对象,赋值时是引用传递, # 浅复制 a=b 此时a,b指向同一个 a,b完全相同 ,修改一个,另一个变化 # c = b.view() c is b --->Flase 修改shape 另一个不会变,但修改某个值,都会变化 # 即b,与b.view() 公用数值部分 ,只有部分相同,其他都不同 # d = b.copy() d用b的值进行初始化,创建的d,创建后,两者每关系了 # ========================================= max_line = array2.argmax(axis=0) # 每列进行比较 [x,y,z] x矩阵第一列中最大的元素的下标,y为第二列 array2[max_line,np.arange(array2.shape[1])] # 输入 那些最大值所在行,以及列数 最后返回矩阵中 每列的最大值 three = np.tile([[1,2],[3,4]],(2,3)) # 以 array2 行变为原来2倍,列变为3倍 """ [[1 2] [3 4]] [[1 2 1 2 1 2] [3 4 3 4 3 4] [1 2 1 2 1 2] [3 4 3 4 3 4]] """ np.sort(array2,axis=1) # 返回一个矩阵 ,是array2 矩阵所有行排序后的 array2.sort(axis=1) # 在矩阵上直接修改 array4 = np.array([23,45,67,1]) index = np.argsort(array4) # [3 0 1 2] 返回的是 array4 排序(默认升序)后 对应数值原来的下标 # 排序应为 [1 23 45 67] 3就是1 原来的索引,0是23原来的索引 # 此时 print(array4[index]) # 返回的其实就是 排序后的矩阵[1 23 45 67]
以上是关于python-numpy的主要内容,如果未能解决你的问题,请参考以下文章