对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 相关文章推荐
Python编写的com组件发生R6034错误的原因与解决办法
Apr 01 Python
Tensorflow 训练自己的数据集将数据直接导入到内存
Jun 19 Python
Python利用递归实现文件的复制方法
Oct 27 Python
python将list转为matrix的方法
Dec 12 Python
python使用selenium实现批量文件下载
Mar 11 Python
python的turtle库使用详解
May 10 Python
python绘制已知点的坐标的直线实例
Jul 04 Python
python处理大日志文件
Jul 23 Python
wxpython实现按钮切换界面的方法
Nov 19 Python
NumPy中的维度Axis详解
Nov 26 Python
Python读取实时数据流示例
Dec 02 Python
Python视频编辑库MoviePy的使用
Apr 01 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
php流量统计功能的实现代码
2012/09/29 PHP
php使用类继承解决代码重复的问题
2015/02/11 PHP
PDO::beginTransaction讲解
2019/01/27 PHP
微信公众号之主动给用户发送消息功能
2019/06/22 PHP
php array_map()函数实例用法
2021/03/03 PHP
jquery uaMatch源代码
2011/02/14 Javascript
JS和Jquery获取和修改label的值的示例代码
2014/01/15 Javascript
jquery 淡入淡出效果的简单实现
2014/02/07 Javascript
jQuery中document与window以及load与ready 区别详解
2014/12/29 Javascript
js完美解决IE6不支持position:fixed的bug
2015/04/24 Javascript
深入理解JavaScript中的浮点数
2016/05/18 Javascript
详解从买域名到使用pm2部署node.js项目全过程
2018/03/07 Javascript
vue-cli脚手架打包静态资源请求出错的原因与解决
2019/06/06 Javascript
koa2 从入门到精通(小结)
2019/07/23 Javascript
JavaScript判断浏览器版本的方法
2019/11/03 Javascript
vue实现移动端拖动排序
2020/08/21 Javascript
Python 文件和输入输出小结
2013/10/09 Python
python开发的小球完全弹性碰撞游戏代码
2013/10/15 Python
python中的全局变量用法分析
2015/06/09 Python
python中使用正则表达式的连接符示例代码
2017/10/10 Python
Python使用Scrapy爬虫框架全站爬取图片并保存本地的实现代码
2018/03/04 Python
python 日志增量抓取实现方法
2018/04/28 Python
详解pycharm连接不上mysql数据库的解决办法
2020/01/10 Python
美国存储和组织商店:The Container Store
2017/08/16 全球购物
Lululemon加拿大官网:加拿大知名体育服装零售商
2019/04/12 全球购物
Oracle中delete,truncate和drop的区别
2016/05/05 面试题
行政管理专业推荐信
2013/11/02 职场文书
初一体育教学反思
2014/01/29 职场文书
车间主任岗位职责
2014/03/16 职场文书
十八大演讲稿
2014/05/22 职场文书
幼儿园运动会口号
2014/06/07 职场文书
八一建军节营销活动方案
2014/08/31 职场文书
2015年五一劳动节活动总结
2015/02/09 职场文书
给老婆的检讨书(搞笑版)
2015/05/06 职场文书
教师学习心得体会范文
2016/01/21 职场文书
小学生作文之《压岁钱的烦恼》
2019/09/27 职场文书