对numpy中轴与维度的理解


Posted in Python onApril 18, 2018

NumPy's main object is the homogeneous multidimensional array. It is a table of elements (usually numbers), all of the same type, indexed by a tuple of positive integers. In NumPy dimensions are called axes. The number of axes is rank.

For example, the coordinates of a point in 3D space [1, 2, 1] is an array of rank 1, because it has one axis. That axis has a length of 3. In the example pictured below, the array has rank 2 (it is 2-dimensional). The first dimension (axis) has a length of 2, the second dimension has a length of 3.

[[ 1., 0., 0.],
 [ 0., 1., 2.]]

ndarray.ndim

数组轴的个数,在python的世界中,轴的个数被称作秩

>> X = np.reshape(np.arange(24), (2, 3, 4))
  # 也即 2 行 3 列的 4 个平面(plane)
>> X
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]]])

shape函数是numpy.core.fromnumeric中的函数,它的功能是读取矩阵的长度,比如shape[0]就是读取矩阵第一维度的长度。

shape(x)

(2,3,4)

shape(x)[0]

2

或者

x.shape[0]

2

再来分别看每一个平面的构成:

>> X[:, :, 0]
array([[ 0, 4, 8],
    [12, 16, 20]])
>> X[:, :, 1]
array([[ 1, 5, 9],
    [13, 17, 21]])
>> X[:, :, 2]
array([[ 2, 6, 10],
    [14, 18, 22]])
>> X[:, :, 3]
array([[ 3, 7, 11],
    [15, 19, 23]])

也即在对 np.arange(24)(0, 1, 2, 3, ..., 23) 进行重新的排列时,在多维数组的多个轴的方向上,先分配最后一个轴(对于二维数组,即先分配行的方向,对于三维数组即先分配平面的方向)

reshpae,是数组对象中的方法,用于改变数组的形状。

二维数组

#!/usr/bin/env python 
# coding=utf-8 
import numpy as np 
 
a=np.array([1, 2, 3, 4, 5, 6, 7, 8]) 
print a 
d=a.reshape((2,4)) 
print d

对numpy中轴与维度的理解

三维数组

#!/usr/bin/env python 
# coding=utf-8 
import numpy as np 
 
a=np.array([1, 2, 3, 4, 5, 6, 7, 8]) 
print a 
f=a.reshape((2, 2, 2)) 
print f

对numpy中轴与维度的理解

形状变化的原则是数组元素不能发生改变,比如这样写就是错误的,因为数组元素发生了变化。

#!/usr/bin/env python 
# coding=utf-8 
import numpy as np 
 
a=np.array([1, 2, 3, 4, 5, 6, 7, 8]) 
print a 
print a.dtype 
e=a.reshape((2,2)) 
print e

对numpy中轴与维度的理解

注意:通过reshape生成的新数组和原始数组公用一个内存,也就是说,假如更改一个数组的元素,另一个数组也将发生改变。

#!/usr/bin/env python 
# coding=utf-8 
import numpy as np 
 
a=np.array([1, 2, 3, 4, 5, 6, 7, 8]) 
print a 
e=a.reshape((2, 4)) 
print e 
a[1]=100 
print a 
print e

对numpy中轴与维度的理解

Python中reshape函数参数-1的意思

a=np.arange(0, 60, 10)
>>>a
array([0,10,20,30,40,50])
>>>a.reshape(-1,1)
array([[0],
[10],
[20],
[30],
[40],
[50]])

如果写成a.reshape(1,1)就会报错

ValueError:cannot reshape array of size 6 into shape (1,1)

>>> a = np.array([[1,2,3], [4,5,6]])
>>> np.reshape(a, (3,-1)) # the unspecified value is inferred to be 2
array([[1, 2],
    [3, 4],
    [5, 6]])

-1表示我懒得计算该填什么数字,由python通过a和其他的值3推测出来。

# 下面是两张2*3大小的照片(不知道有几张照片用-1代替),如何把所有二维照片给摊平成一维
>>> image = np.array([[[1,2,3], [4,5,6]], [[1,1,1], [1,1,1]]])
>>> image.shape
(2, 2, 3)
>>> image.reshape((-1, 6))
array([[1, 2, 3, 4, 5, 6],
    [1, 1, 1, 1, 1, 1]])

以上这篇对numpy中轴与维度的理解就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Python 相关文章推荐
动态创建类实例代码
Oct 07 Python
python编程实现随机生成多个椭圆实例代码
Jan 03 Python
Python实现Pig Latin小游戏实例代码
Feb 02 Python
基于Python List的赋值方法
Jun 23 Python
Python eval的常见错误封装及利用原理详解
Mar 26 Python
django 通过url实现简单的权限控制的例子
Aug 16 Python
Python数据可视化:泊松分布详解
Dec 07 Python
python代码如何实现余弦相似性计算
Feb 09 Python
基于TensorBoard中graph模块图结构分析
Feb 15 Python
python数据预处理 :数据抽样解析
Feb 24 Python
Python内置函数locals和globals对比
Apr 28 Python
Pytorch高阶OP操作where,gather原理
Apr 30 Python
Python实现购物车购物小程序
Apr 18 #Python
详谈python中冒号与逗号的区别
Apr 18 #Python
python logging日志模块以及多进程日志详解
Apr 18 #Python
详解Python3 中hasattr()、getattr()、setattr()、delattr()函数及示例代码数
Apr 18 #Python
Python中数组,列表:冒号的灵活用法介绍(np数组,列表倒序)
Apr 18 #Python
浅谈numpy数组中冒号和负号的含义
Apr 18 #Python
对python numpy数组中冒号的使用方法详解
Apr 17 #Python
You might like
Ajax实时验证用户名/邮箱等是否已经存在的代码打包
2011/12/01 PHP
PHP遍历目录函数opendir()、readdir()、closedir()、rewinddir()总结
2014/11/18 PHP
PHP开发之归档格式phar文件概念与用法详解【创建,使用,解包还原提取】
2017/11/17 PHP
phpinfo无法显示的原因及解决办法
2019/02/15 PHP
PHP7引入的"??"和"?:"的区别讲解
2019/04/08 PHP
转自Jquery官方 jQuery1.1.3发布,速度提升800%,体积保持20K
2007/08/19 Javascript
jquery 分页控件实现代码
2009/11/30 Javascript
基于Jquery的温度计动画效果
2010/06/18 Javascript
JS保留小数点(四舍五入、四舍六入)实现思路及实例
2013/04/25 Javascript
jquery图形密码实现方法
2015/03/11 Javascript
jQuery插件scroll实现无缝滚动效果
2015/04/27 Javascript
jQuery右下角旋转环状菜单特效代码
2015/08/10 Javascript
五种js判断是否为整数类型方式
2015/12/03 Javascript
实例剖析AngularJS框架中数据的双向绑定运用
2016/03/04 Javascript
jQuery购物车插件jsorder用法(支持后台处理程序直接转换成DataTable处理)
2016/06/08 Javascript
JavaScript中push(),join() 函数 实例详解
2016/09/06 Javascript
Angular指令封装jQuery日期时间插件datetimepicker实现双向绑定示例
2017/01/22 Javascript
基于BootStrap的文本编辑器组件Summernote
2017/10/27 Javascript
让网站自动生成章节目录索引的多个js代码
2018/01/07 Javascript
微信小程序实现topBar底部选择栏效果
2018/07/20 Javascript
JS异步错误捕获的一些事小结
2019/04/26 Javascript
用pywin32实现windows模拟鼠标及键盘动作
2014/04/22 Python
python实现八大排序算法(1)
2017/09/14 Python
python如何发布自已pip项目的方法步骤
2018/10/09 Python
django之跨表查询及添加记录的示例代码
2018/10/16 Python
在python中利用最小二乘拟合二次抛物线函数的方法
2018/12/29 Python
python使用wxpy实现微信消息防撤回脚本
2019/04/29 Python
Python猜数字算法题详解
2020/03/01 Python
HTML5利用约束验证API来检查表单的输入数据的代码实例
2016/12/20 HTML / CSS
eDreams意大利:南欧领先的在线旅行社
2018/11/23 全球购物
英国领先的露营和露营车品牌之一:OLPRO
2019/08/06 全球购物
合作意向书范本
2014/03/31 职场文书
四风问题对照检查整改措施思想报告
2014/10/05 职场文书
教师党员批评与自我批评
2014/10/15 职场文书
小学三八妇女节活动总结
2015/02/06 职场文书
先进个人主要事迹怎么写
2015/11/04 职场文书