我想你知道二维数组的转置,是矩阵交换
在numpy中也可以转置三维数组,np.T在默认情况下进行调换0轴和2轴的操作
本文主要就3位数组轴交换的理解发表本人的意见。
a=NP.Array(range(24 ) )
Out[101]:
array ([ 0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,
17、18、19、20、21、22、23 ]
b=a.reshape (2,3,4 ) )。
B
Out[103]:
array ([ 0,1,2,3 ],
[ 4,5,6,7 ],
[ 8,9,10,11 ],
[ 12,13,14,15 ],
[ 16,17,18,19 ],
[ 20,21,22,23 ] )
在3位数组中,三个轴分别称为行、列和面
在数组b中,
[ 0,1,2,3 ],
[ 4,5,6,7 ],
[8、9、10、11]是一行
[ 12,13,14,15 ],
[ 16,17,18,19 ],
[20、21、22、23]是一行
展开写[ 0,1,2,3 ]、[ 4,5,6,7 ]、[ 8,9,10,11 ]可以看得更清楚。 这是行的概念
[ 0,1,2,3 ]是一列
[4、5、6、7]是一列
[8、9、10、11]是一列
其中,[ 0,4,8 ] [ 1,5,9 ] [ 2,6,10 ] [ 3,7,11 ]分别是面
回顾一下,就知道b是由2行3列4面构成的3维排列(行表示0轴、列1轴、面2轴)。
接下来,请记住要更换哪个轴。 请勿更改另一个轴。 例如以下所示
将c作为b的列和面互换后的排列
c=b.swap axes (1,2 ) ) ) ) ) ) ) ) ) c ) ) ) b.swap axes (1,2 ) ) ) ) ) ) c ) ) ) b ) ) b ) ) b ) ) s ) b ) ) s ) b ) s )
C
Out[105]:
array ([ 0,4,8 ],
[ 1,5,9 ],
[ 2,6,10 ],
[ 3,7,11 ],
[ 12,16,20 ],
[ 13,17,21 ],
[ 14,18,22 ],
[ 15,19,23 ] )
请想起那句话。 无论更换哪一个轴,另一个轴都不会改变。 我知道是c还是两行。 而且,交换只会在每行发生变化
原来的列成了面,原来的面成了列
从第二个方面来看,d表示b的0轴和2轴的交换
d=b.swap axes (0,2 ) ) ) ) ) )。
d
Out[108]:
array ([ 0,12 ],
[ 4,16 ],
[ 8,20 ],
[ 1,13 ],
[ 5,17 ]、
[ 9,21 ],
[ 2,14 ],
[ 6,18 ]、
[ 10,22 ],
[ 3,15 ],
[ 7,19 ],
[ 11,23 ] )
看起来有点被逼得走投无路,想想那句话。 交换了0轴和2轴。 1轴不变。
我们把原来的b看作是以行和面为要素的二维排列
也就是说b是两行,是四方的。 每个面将被第一个元素替换,[ 0,4,8 ]将被[0]替换
即,b可以写成[0]、[1]、[2]、[3]
[12]、[13]、[14]和[15]。
而且,更换轴实际上成为二维排列转置
变换后为[0],[12]
[1],[13]
[2],[14]
[3],[15]
最后,试着扩大各自的面,就会得到结果。 到现在为止有没有法线,面中的元素个数和列的大小是一样的。
那么,接下来请试着更换0轴和1轴。 一步一步,欢迎评论区讨论。
PIL对象和numpy维数组的相互转换
# https://stack overflow.com/questions/384759/how-to-convert-a-pil-image-into-a-numpy-arrayfrompili .
numpy下三维数组到二维数组的转换
numpy的reshape (函数将三维数组转换为二维数组。 请参阅以下示例:a=NP.reshape(NP.arange ) 18 )、(3,3,2 )。) .
一. Numpy基础---序列
(一) Numpy数组对象Numpy的nadrray是多维数组对象,该对象具有:个实际的
数据 描述这些数据的元数据 大部分的数组操作仅仅修改元数据部分,而不改变底层的实际数据. 数组的数 ...Numpy | 12 数组操作
Numpy 中包含了一些函数用于处理数组,大概可分为以下几类: 修改数组形状 翻转数组 修改数组维度 连接数组 分割数组 数组元素的添加与删除 一.修改数组形状 函数 描述 reshape 不改变数据 ...
NumPy:数组计算
一.MumPy:数组计算 1.NumPy是高性能科学计算和数据分析的基础包.它是pandas等其他各种工具的基础.2.NumPy的主要功能: ndarray,一个多维数组结构,高效且节省空间 无需循环 ...
python数据分析 Numpy基础 数组和矢量计算
NumPy(Numerical Python的简称)是Python数值计算最重要的基础包.大多数提供科学计算的包都是用NumPy的数组作为构建基础. NumPy的部分功能如下: ndarray,一个具 ...
C语言三维数组分解
很多人在学习C的时候,感觉三维数组很难想象,而且不理解深度是什么?做了一个图,帮大家分解一下 ...
numpy的数组常用运算练习
import numpy as np # 一维数组 print('==========# 一维数组===========') A = np.array([1, 2, 3, 4]) print(A) # ...
NumPy 迭代数组
NumPy 迭代数组 NumPy 迭代器对象 numpy.nditer 提供了一种灵活访问一个或者多个数组元素的方式. 迭代器最基本的任务的可以完成对数组元素的访问. 接下来我们使用 arange() ...
随机推荐
JAVA学习遇到的问题:接口实现
引用知乎看到对接口的总结: 接口就是个招牌比如说你饿了,看到前面有个挂着KFC的店,然后你想到可以进去买汉堡了.KFC就是接口,我们看到了这个接口,就知道这个店会卖汉堡(实现接口).那么为什么我们要去 ...
零基础如何入门Python
编程零基础如何学习Python 如果你是零基础,注意是零基础,想入门编程的话,我推荐你学Python.虽然国内基本上是以C语言作为入门教学,但在麻省理工等国外大学都是以Python作为编程入门教学的. ...
20160123.CCPP详解体系(0002天)
程序片段(01):字符.c 内容概要: 转义字符 #define _CRT_SECURE_NO_WARNINGS #include #include
拥抱ARM妹子 序章!ARM妹子~~ 哥我来啦!
一个负心汉即将移情别恋,从51转到ARM妹子啦?其实8是的,俺准备开烂漫的向日葵.哇——咔~咔~~.考虑功耗和成本等问题,只有51肯定是不够的,所以嘛~~(一脸坏笑)嘿嘿~~,ARM妹子俺追定了.出于对ARM ...
linux android ndk
Android调用so库, so库是c语言编写, 在linux 64位系统+ndk(32位)生成 lib*.so (32位) 1. 所需软件环境: 1)so库开发环境 操作系统: Redhat Ser ...
2017上半年技术文章集合【Android】—184篇文章分类汇总
地址: http://blog.csdn.net/androidstarjack/article/details/77923753 声明 | 本文是于亚豪 原创 终端研发部 前言: 2017年已经过大 ...
Unity 图形处理(切分与拉伸)
素材的导入设置 1.导入的图片要设置为 Sprite 才能作为UI使用 2.如果需要进行切分,Sprite Mode 选择 Multiple 进行切分和拉伸设置 1.点击进入精灵编辑视图 2.点击按钮 ...
[HTML] 动态修改input placeholder的颜色
.invalid:-moz-placeholder { /* Mozilla Firefox 4 to 18 */ color: red; } .invalid::-moz-placeholder { ...