对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获取系统默认字符编码的方法
Jun 04 Python
浅谈scrapy 的基本命令介绍
Jun 13 Python
Python实现上下班抢个顺风单脚本
Feb 07 Python
python3.X 抓取火车票信息【修正版】
Jun 19 Python
Python实现一个数组除以一个数的例子
Jul 20 Python
Python实现网页截图(PyQT5)过程解析
Aug 12 Python
Tensorflow 自定义loss的情况下初始化部分变量方式
Jan 06 Python
Python的logging模块基本用法
Dec 24 Python
Python+Appium实现自动化清理微信僵尸好友的方法
Feb 04 Python
Python 中的函数装饰器和闭包详解
Feb 06 Python
如何正确理解python装饰器
Jun 15 Python
关于 Python json中load和loads区别
Nov 07 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
Adodb的十个实例(清晰版)
2006/12/31 PHP
php实现word转html的方法
2016/01/22 PHP
PHP实现查询手机归属地的方法详解
2017/04/28 PHP
Laravel 实现添加多语言提示信息
2019/10/25 PHP
早该知道的7个JavaScript技巧
2013/03/27 Javascript
jsp+javascript打造级连菜单的实例代码
2013/06/14 Javascript
关于img的href和src取变量及赋值的方法
2014/04/28 Javascript
JS基于面向对象实现的选项卡效果示例
2016/12/20 Javascript
原生js FileReader对象实现图片上传本地预览效果
2020/03/27 Javascript
自定义类似于jQuery UI Selectable 的Vue指令v-selectable
2017/08/23 jQuery
JavaScript实现短信倒计时60s
2017/10/09 Javascript
layui加载数据显示loading加载完成loading消失的实例代码
2019/09/23 Javascript
vue.config.js中配置Vue的路径别名的方法
2020/02/11 Javascript
Python回调函数用法实例详解
2015/07/02 Python
django初始化数据库的实例
2018/05/27 Python
Django contenttypes 框架详解(小结)
2018/08/13 Python
Python3模拟登录操作实例分析
2019/03/12 Python
Django框架视图介绍与使用详解
2019/07/18 Python
Django自带的加密算法及加密模块详解
2019/12/03 Python
python3读取csv文件任意行列代码实例
2020/01/13 Python
python如何对链表操作
2020/10/10 Python
pycharm 如何取消连按两下shift出现的全局搜索
2021/01/15 Python
html5指南-2.如何操作document metadata
2013/01/07 HTML / CSS
HTML5手指下滑弹出负一屏阻止移动端浏览器内置下拉刷新功能的实现代码
2020/04/10 HTML / CSS
钉钉企业内部H5微应用开发详解
2020/05/12 HTML / CSS
美国领先的户外服装与装备用品店:Moosejaw
2016/08/25 全球购物
HearthSong官网:儿童户外玩具、儿童益智玩具
2017/10/16 全球购物
贝玲妃英国官网:Benefit英国
2018/02/03 全球购物
财政局长自荐信范文
2013/12/22 职场文书
简单英文演讲稿
2014/01/01 职场文书
干部现实表现材料
2014/02/13 职场文书
2015年六一儿童节活动方案
2015/05/05 职场文书
宝葫芦的秘密观后感
2015/06/11 职场文书
深入理解go缓存库freecache的使用
2022/02/15 Golang
Mysql中的触发器定义及语法介绍
2022/06/25 MySQL
Three.js实现雪糕地球的使用示例详解
2022/07/07 Javascript