对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 client使用http post 到server端的代码
Feb 10 Python
Python的Django框架中if标签的相关使用
Jul 15 Python
Python探索之SocketServer详解
Oct 28 Python
Python实现定时备份mysql数据库并把备份数据库邮件发送
Mar 08 Python
Python中pillow知识点学习
Apr 30 Python
对python调用RPC接口的实例详解
Jan 03 Python
python调用动态链接库的基本过程详解
Jun 19 Python
python return逻辑判断表达式实现解析
Dec 02 Python
PySwarms(Python粒子群优化工具包)的使用:GlobalBestPSO例子解析
Apr 05 Python
python3 实现mysql数据库连接池的示例代码
Apr 17 Python
python绘制箱型图
Apr 27 Python
Python移位密码、仿射变换解密实例代码
Jun 27 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
PHP5中的时间相差8小时的解决办法
2008/03/28 PHP
设置php页面编码的两种方法示例介绍
2014/03/03 PHP
[原创]php token使用与验证示例【测试可用】
2017/08/30 PHP
PDO::errorInfo讲解
2019/01/28 PHP
Ajax+PHP实现的删除数据功能示例
2019/02/12 PHP
JavaScript中几种常见排序算法小结
2011/02/22 Javascript
通过复制Table生成word和excel的javascript代码
2014/01/20 Javascript
[原创]推荐10款最热门jQuery UI框架
2014/08/19 Javascript
使用JavaScript获取地址栏参数的方法
2014/12/19 Javascript
JS验证IP,子网掩码,网关和MAC的方法
2015/07/02 Javascript
Bootstrap基本组件学习笔记之导航(10)
2016/12/07 Javascript
vue.js使用v-model指令实现的数据双向绑定功能示例
2018/05/22 Javascript
Vue Router的懒加载路径的解决方法
2018/06/21 Javascript
详解Vue底部导航栏组件
2019/05/02 Javascript
移动端底部导航固定配合vue-router实现组件切换功能
2019/06/13 Javascript
[01:50]WODOTA制作 DOTA2中文宣传片《HERO》
2013/04/28 DOTA
500行Python代码打造刷脸考勤系统
2019/06/03 Python
python实时检测键盘输入函数的示例
2019/07/17 Python
python控制台实现tab补全和清屏的例子
2019/08/20 Python
使用pyhon绘图比较两个手机屏幕大小(实例代码)
2020/01/03 Python
pytorch 准备、训练和测试自己的图片数据的方法
2020/01/10 Python
django模型动态修改参数,增加 filter 字段的方式
2020/03/16 Python
python+opencv3.4.0 实现HOG+SVM行人检测的示例代码
2021/01/28 Python
CSS3中的@keyframes关键帧动画的选择器绑定
2016/06/13 HTML / CSS
玩具反斗城葡萄牙官方商城:Toys"R"Us葡萄牙
2016/10/21 全球购物
Lyle & Scott苏格兰金鹰官网:英国皇室御用品牌
2018/05/09 全球购物
美国隐形眼镜网上商店:Lens.com
2019/09/03 全球购物
实习医生自我评价
2013/09/22 职场文书
区域销售经理职责
2013/12/22 职场文书
优秀护士获奖感言
2014/02/20 职场文书
旅游局领导班子“四风”问题对照检查材料思想汇报
2014/09/29 职场文书
巴黎圣母院读书笔记
2015/06/26 职场文书
详解GaussDB for MySQL性能优化
2021/05/18 MySQL
python基础之文件操作
2021/10/24 Python
MySQL之MyISAM存储引擎的非聚簇索引详解
2022/03/03 MySQL
P站美图推荐——变身女主角特辑
2022/03/20 日漫