使用numpy实现矩阵的翻转(flip)与旋转
numpy.flip(m, axis=None)
Reverse the order of elements in an array along the given axis.
The shape of the array is preserved, but the elements are reordered.
把m在axis维度进行切片,并把这个维度的index进行颠倒
示例
随机生成一个二维数组
import numpy as np a=np.random.randint(1,9,size=9).reshape((3,3))
[[5 8 6]
[3 1 7]
[8 7 8]]
axis=0:上下翻转,意味着把行看成整体,行的顺序发生颠倒,每一行的元素不发生改变
print(np.flip(a,axis=0))
[[8 7 8]
[3 1 7]
[5 8 6]]
axis=1:左右翻转,意味着把列看成整体,列的顺序发生颠倒,每一列的元素不发生改变
print(np.flip(a,axis=1))
[[6 8 5]
[7 1 3]
[8 7 8]]
Numpy矩阵的旋转
使用skimage.io读出来的图片是numpy.darray格式,掌握numpy矩阵的旋转与翻转,可实现数据增广(data augmentation)。
可用rot90函数实现,例子如下:
import numpy as np mat = np.array([[1,3,5], [2,4,6], [7,8,9] ]) print mat, "# orignal" mat90 = np.rot90(mat, 1) print mat90, "# rorate 90 <left> anti-clockwise" mat90 = np.rot90(mat, -1) print mat90, "# rorate 90 <right> clockwise" mat180 = np.rot90(mat, 2) print mat180, "# rorate 180 <left> anti-clockwise" mat270 = np.rot90(mat, 3) print mat270, "# rorate 270 <left> anti-clockwise"
如果mat是图片,那么可视化效果更好。
以上为个人经验,希望能给大家一个参考,也希望大家多多支持我们。
相关推荐
-
numpy数组合并和矩阵拼接的实现
Numpy中提供了concatenate,append, stack类(包括hsatck.vstack.dstack.row_stack.column_stack),r_和c_等类和函数用于数组拼接的操作. 各种函数的特点和区别如下标: concatenate 提供了axis参数,用于指定拼接方向 append 默认先ravel再拼接成一维数组,也可指定axis stack 提供了axis参数,用于生成新的维度 hstack 水平拼接,沿着行的方向,对列进行拼接 vstack 垂直拼接,沿着列的
-
从Pytorch模型pth文件中读取参数成numpy矩阵的操作
目的: 把训练好的pth模型参数提取出来,然后用其他方式部署到边缘设备. Pytorch给了很方便的读取参数接口: nn.Module.parameters() 直接看demo: from torchvision.models.alexnet import alexnet model = alexnet(pretrained=True).eval().cuda() parameters = model.parameters() for p in parameters: numpy_para =
-
Numpy实现矩阵运算及线性代数应用
一.创建矩阵的方法 import numpy as np # 1直接创建 mat=np.mat("1 2 3;4 5 6;7 8 9") print(mat) # 2使用numpy数组创建矩阵 mat2=np.mat(np.arange(1,10).reshape(3,3)) print(mat2) # 3从已有的矩阵中通过bmat函数创建 A=np.eye(2) B=A*2 mat3=np.bmat("A B;B A") print(mat3) #类似于拼接 二.
-
NumPy 矩阵乘法的实现示例
NumPy 支持的几类矩阵乘法也很重要. 元素级乘法 你已看过了一些元素级乘法.你可以使用 multiply 函数或 * 运算符来实现.回顾一下,它看起来是这样的: m = np.array([[1,2,3],[4,5,6]]) m # 显示以下结果: # array([[1, 2, 3], # [4, 5, 6]]) n = m * 0.25 n # 显示以下结果: # array([[ 0.25, 0.5 , 0.75], # [ 1. , 1.25, 1.5 ]]) m * n # 显示以
-
Python numpy大矩阵运算内存不足如何解决
程序运行,产生如下结果,然后进程终止,导致这一结果的原因很有可能是内存爆炸. 当两个较大的 (e.g., 10000*10000 维)ndarray 做运算(加法,or 乘法)时,很容易出现这样的结果. 解决办法: 大多数情况下,这种大矩阵都是稀疏的.尽可能地利用稀疏计算的方式,例如稀疏矩阵,或者只计算非 0 位置的值. 如果都是整数运算,可以设置 dtype=int,而非 dtype=float, 可以省下不少空间. linux 系统下,使用 top 命令,可以很容易地看到内存(%MEM) 的
-
numpy和tensorflow中的各种乘法(点乘和矩阵乘)
点乘和矩阵乘的区别: 1)点乘(即" * ") ---- 各个矩阵对应元素做乘法 若 w 为 m*1 的矩阵,x 为 m*n 的矩阵,那么通过点乘结果就会得到一个 m*n 的矩阵. 若 w 为 m*n 的矩阵,x 为 m*n 的矩阵,那么通过点乘结果就会得到一个 m*n 的矩阵. w的列数只能为 1 或 与x的列数相等(即n),w的行数与x的行数相等 才能进行乘法运算. 2)矩阵乘 ---- 按照矩阵乘法规则做运算 若 w 为 m*p 的矩阵,x 为 p*n 的矩阵,那么通过矩阵相乘结
-
使用numpy实现矩阵的翻转(flip)与旋转
numpy.flip(m, axis=None) Reverse the order of elements in an array along the given axis. The shape of the array is preserved, but the elements are reordered. 把m在axis维度进行切片,并把这个维度的index进行颠倒 示例 随机生成一个二维数组 import numpy as np a=np.random.randint(1,9,size
-
Python numpy 提取矩阵的某一行或某一列的实例
如下所示: import numpy as np a=np.arange(9).reshape(3,3) a Out[31]: array([[0, 1, 2], [3, 4, 5], [6, 7, 8]]) 矩阵的某一行 a[1] Out[32]: array([3, 4, 5]) 矩阵的某一列 a[:,1] Out[33]: array([1, 4, 7]) b=np.eye(3,3) b Out[36]: array([[ 1., 0., 0.], [ 0., 1., 0.], [ 0.,
-
Python numpy中矩阵的基本用法汇总
Python矩阵的基本用法 mat()函数将目标数据的类型转化成矩阵(matrix) 1,mat()函数和array()函数的区别 Numpy函数库中存在两种不同的数据类型(矩阵matrix和数组array),都可以用于处理行列表示的数字元素,虽然他们看起来很相似,但是在这两个数据类型上执行相同的数学运算可能得到不同的结果,其中Numpy函数库中的matrix与MATLAB中matrices等价. 直接看一个例子: import numpy as np a = np.mat('1 3;5 7')
-
Numpy中矩阵matrix读取一列的方法及数组和矩阵的相互转换实例
Numpy matrix 必须是2维的,但是 numpy arrays (ndarrays) 可以是多维的(1D,2D,3D····ND),matrix是Array的一个小的分支,包含于Array. import numpy as np >>> m = np.mat([[1,2],[3,4]]) >>> m[0] #读取一行 matrix([[1, 2]]) >>> m[:,0] #读取一列 matrix([[1], [3]]) numpy中数组和矩阵
-
Python 使用Numpy对矩阵进行转置的方法
如下所示: matrix.py #!/usr/bin/python # -*- encoding:UTF-8-*- import pprint import numpy as np matrix = [[1,2],[3,4],[5,6]] print('列表:') pprint.pprint(matrix) matrix_2 = np.matrix(matrix) print('原矩阵:') pprint.pprint(matrix_2) matrix_transpose = np.transp
-
浅谈利用numpy对矩阵进行归一化处理的方法
本文不讲归一化原理,只介绍实现(事实上看了代码就会懂原理),代码如下: def Normalize(data): m = np.mean(data) mx = max(data) mn = min(data) return [(float(i) - m) / (mx - mn) for i in data] 代码只有5行并不复杂,但是需要注意的一点是一定要将计算的均值以及矩阵的最大.最小值存为变量放到循环里,如果直接在循环里计算对应的值会造成归一化特别慢,笔者之前有过深切的酸爽体验-. 以上这篇
-
numpy 对矩阵中Nan的处理:采用平均值的方法
尽管我们可以将所有的NaN替换成0,但是由于并不知道这些值的意义,所以这样做是个下策.如果它们是开氏温度,那么将它们置成0这种处理策略就太差劲了. 下面我们用平均值来代替缺失值,平均值根据那些非NaN得到. from numpy import * datMat = mat([[1,2,3],[4,Nan,6]]) numFeat = shape(datMat)[1] for i in range(numFeat): meanVal = mean(datMat[nonzero(~isnan(dat
-
numpy中矩阵合并的实例
python中科学计算包numpy中矩阵的合并,需要用到如下两个函数: 列合并:np.column_stack() ,其中函数参数为一个tuple 行合并:np.row_stack(),其中函数参数为一个tuple >>> import numpy as np >>> a = np.arange(8).reshape(4, -1) >>> print(a) [[0 1] [2 3] [4 5] [6 7]] >>> b = np.ar
-
Python+numpy实现矩阵的行列扩展方式
对于numpy矩阵,行列扩展有三种比较常用的方法: 1.使用矩阵对象的c_方法扩展列,使用矩阵对象的r_方法扩展行. 2.使用numpy扩展库提供的insert()函数,使用axis参数指定行或列. 3.使用numpy扩展库的row_stack()函数扩展行,column_stack()函数扩展列. 以上这篇Python+numpy实现矩阵的行列扩展方式就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持我们.
-
详解Numpy扩充矩阵维度(np.expand_dims, np.newaxis)和删除维度(np.squeeze)的方法
在操作矩阵的时候,不同的接口对于矩阵的输入维度要求不同,输入可能为1-D,2-D,3-D等等.下面介绍一下使用Numpy进行矩阵维度变更的相关方法.主要包括以下几种: 1.np.newaxis扩充矩阵维度 2.np.expand_dims扩充矩阵维度 3.np.squeeze删除矩阵中维度大小为1的维度 np.newaxis,np.expand_dims扩充矩阵维度: import numpy as np x = np.arange(8).reshape(2, 4) print(x.shape)
随机推荐
- 在SQL Server中将数据导出为XML和Json的方法
- 微信小程序侧边栏滑动特效(左右滑动)
- JS实现左右无缝轮播图代码
- spring boot 配置Filter过滤器的方法
- Java正则之贪婪匹配、惰性匹配
- python使用MySQLdb访问mysql数据库的方法
- Python通过future处理并发问题
- showModelessDialog()使用详解
- form自动提交实例讲解
- jsp中获得路径的两种方法和获得url路径的方法(推荐)
- Starting MySQL.Manager of pid-file quit without updating file.[FAILED]的解决方法
- MySQL进阶SELECT语法篇
- PHP实现批量检测网站是否能够正常打开的方法
- 对Shell 脚本加密的方法
- AJAX javascript的跨域访问执行
- Android中使用pull解析器操作xml文件的解决办法
- 基于Jquery实现表单验证
- 详解vue axios中文文档
- 再谈远程控制linux下
- C#编程获取实体类属性名和值的方法示例