numpy 札记

transpose
在处理caffe读入的图片数据时,需要将原始图片的数据
H*W*3(height*width*RGB) 转换为 3*H*W(RGB*heigth*width)
需要用到numpy的transpose功能:设想图片尺寸2x2,RGB模式 则数组规模为2x2x3
>>>import numpy as np
>>> x = np.arange(12).reshape(2,2,3)
>>> x
array([[[ 0, 1, 2],
[ 3, 4, 5]], [[ 6, 7, 8],
[ 9, 10, 11]]])
>>> x_ = np.transpose(x,(2,0,1))
>>> x_
array([[[ 0, 3],
[ 6, 9]], [[ 1, 4],
[ 7, 10]], [[ 2, 5],
[ 8, 11]]])
>>>
transpose的实现原理其实很简单,只要保存一个view即可,例如原索引是i,j,k,按照“(2,0,1)” transpose后,索引便成为k,i,j,即Ai,j,k = ATk,i,j ,可以用上面的例子试验。
多维数组指定axies上元素顺序的调换(例如RGB->BGR):
还有一个问题,在caffe中根据convention使用BGR的通道模式,所以对如上x_做0轴上的变换
>>> x_.shape
(3, 2, 2)
>>> x_[(2,1,0),:,:]
array([[[ 2, 5],
[ 8, 11]], [[ 1, 4],
[ 7, 10]], [[ 0, 3],
[ 6, 9]]])
>>>
调换选定轴上元素的位置其实很方便,在指定轴位置放置指示顺序的tuple即可,其他轴保持(使用":")。
例如将上面的2x2矩阵上下两行对调
>>> x_
array([[[ 0, 3],
[ 6, 9]], [[ 1, 4],
[ 7, 10]], [[ 2, 5],
[ 8, 11]]])
>>> x_.shape
(3, 2, 2)
>>> x_[:,(1,0),:]
array([[[ 6, 9],
[ 0, 3]], [[ 7, 10],
[ 1, 4]], [[ 8, 11],
[ 2, 5]]])
>>>
两个元素个数相同但维数不同的数组赋值
例如'x_flat'是维数为(12,)的行向量,现在想将上面的2x2x3数组'x_'复制给'x_flat'而不改变'x_flat'的内存空间,可如下:
>>> x_flat = np.arange(12)
>>> x_flat.shape
(12,)
>>> x_flat
array([ 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11])
>>> x_
array([[[ 0, 3],
[ 6, 9]], [[ 1, 4],
[ 7, 10]], [[ 2, 5],
[ 8, 11]]])
>>> x_flat.flat = x_.flat
>>> x_flat
array([ 0, 3, 6, 9, 1, 4, 7, 10, 2, 5, 8, 11])
numpy 札记的更多相关文章
- 利用Python进行数据分析(5) NumPy基础: ndarray索引和切片
概念理解 索引即通过一个无符号整数值获取数组里的值. 切片即对数组里某个片段的描述. 一维数组 一维数组的索引 一维数组的索引和Python列表的功能类似: 一维数组的切片 一维数组的切片语法格式为a ...
- 利用Python进行数据分析(4) NumPy基础: ndarray简单介绍
一.NumPy 是什么 NumPy 是 Python 科学计算的基础包,它专为进行严格的数字处理而产生.在之前的随笔里已有更加详细的介绍,这里不再赘述. 利用 Python 进行数据分析(一)简单介绍 ...
- 利用Python进行数据分析(6) NumPy基础: 矢量计算
矢量化指的是用数组表达式代替循环来操作数组里的每个元素. NumPy提供的通用函数(既ufunc函数)是一种对ndarray中的数据进行元素级别运算的函数. 例如,square函数计算各元素的平方,r ...
- python安装numpy、scipy和matplotlib等whl包的方法
最近装了python和PyCharm开发环境,但是在安装numpy和matplotlib等包时出现了问题,现总结一下在windows平台下的安装方法. 由于现在找不到了工具包新版本的exe文件,所以采 ...
- 深入理解numpy
一.为啥需要numpy python虽然说注重优雅简洁,但它终究是需要考虑效率的.别说运行速度不是瓶颈,在科学计算中运行速度就是瓶颈. python的列表,跟java一样,其实只是一维列表.一维列表相 ...
- Python Numpy,Pandas基础笔记
Numpy Numpy是python的一个库.支持维度数组与矩阵计算并提供大量的数学函数库. arr = np.array([[1.2,1.3,1.4],[1.5,1.6,1.7]])#创建ndarr ...
- broadcasting Theano vs. Numpy
broadcasting Theano vs. Numpy broadcast mechanism allows a scalar may be added to a matrix, a vector ...
- python之numpy
一.矩阵的拼接合并 列拼接:np.column_stack() >>> import numpy as np >>> a = np.arange(9).reshap ...
- win7系统下python安装numpy,matplotlib,scipy和scikit-learn
1.安装numpy,matplotlib,scipy和scikit-learn win7系统下直接采用pip或者下载源文件进行安装numpy,matplotlib,scipy时会遇到各种问题,这是因为 ...
随机推荐
- 解决aapt命令在Linux下无法运行的问题
新的一个项目,需要在Linux下执行aapt命令对apk文件进行处理 开发环境: MacBook-Pro:appSecuity zhang$ uname -a Darwin huijundeMacBo ...
- 【视图】实时库存【SSKC】
select A.pluno,A.pluname,A.qty,CASE WHEN b.QTY IS NULL THEN 0 ELSE B.QTY END AS XSQTY ,case when ...
- ArrayList、Vactor以及LinkList的区别
ArrayList:底层数据结构是数组结构,你就可以把它看成是一个可变大小的且只能装对象的数组.因为数组有索引(角标)所以ArrayList的查询速度快,而添加删除元素速度稍慢.因为,你每删除或者添加 ...
- php 注释
@access 使用范围:class,function,var,define,module 该标记用于指明关键字的存取权限:private.public或proteced @author 指明作者 @ ...
- webform登录操作中正则表达式运用
关于正则表达式的运用,估计很多人都会觉得这很麻烦.确实很麻烦,太多表达式我也记不住,很多都是临时需要用的时候再去查,有点小学生读小说的架势,不认识的字再去翻字典. 正则表达式严格来说对于程序的功能实现 ...
- draw lines on ColumnChart
原文 http://blog.csdn.net/lixuekun820/article/details/5485042 Summary: Adobe 的 Flex Chart提供了很强大的功能,通过简 ...
- ip,子网掩码,网关,DNS
要配置一个局域网通信的计算机(也就是同一个网络): IP地址 子网掩码 要配置一个跨网段通信的计算机: IP地址 子网掩码 网关(路由使用) 要配置一个可上网的计算机: IP地址 子网掩码 网关 DN ...
- leftpad填充函数;
<!doctype html> <html lang="en"> <head> <meta charset="UTF-8&quo ...
- Android创建启动画面[转]
每个Android应用启动之后都会出现一个Splash启动界面,显示产品的LOGO.公司的LOGO或者开发者信息.如果应用程序启动时间比较长,那么启动界面就是一个很好的东西,可以让用户耐心等待这段枯燥 ...
- 关于cocos2dx 3.0升级崩溃报错(unable to load native library) 和(Fatal signal 11 (SIGSEGV) at 0x00000000)
近期一直在Windows平台开发cocos-2dx游戏,期间做了一次引擎升级,升级到了3.0正式版本号.Windows平台上表现非常正常,没有出现什么问题. 上周五准备公布一个安卓包,编译非常轻松的就 ...