对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 解析XML文件
Apr 15 Python
python字典基本操作实例分析
Jul 11 Python
Python中django学习心得
Dec 06 Python
Python实现的凯撒密码算法示例
Apr 12 Python
tensorflow 使用flags定义命令行参数的方法
Apr 23 Python
Python交互环境下实现输入代码
Jun 22 Python
基于Python的Post请求数据爬取的方法详解
Jun 14 Python
python抓取多种类型的页面方法实例
Nov 20 Python
Python 写了个新型冠状病毒疫情传播模拟程序
Feb 14 Python
Django接收照片储存文件的实例代码
Mar 07 Python
基于Python实现全自动下载抖音视频
Nov 06 Python
Python 制作自动化翻译工具
Apr 25 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处理文件的小例子(解压缩,删除目录)
2013/02/03 PHP
php ctype函数中文翻译和示例
2014/03/21 PHP
win7计划任务定时执行PHP脚本设置图解
2014/05/09 PHP
php计算两个日期时间差(返回年、月、日)
2014/06/19 PHP
PHP实现将科学计数法转换为原始数字字符串的方法
2014/12/16 PHP
PHP递归实现层级树状展开
2016/04/01 PHP
动态表单验证的操作方法和TP框架里面的ajax表单验证
2017/07/19 PHP
PHP面向对象之里氏替换原则简单示例
2018/04/08 PHP
PHPMAILER实现PHP发邮件功能
2018/04/18 PHP
Add a Table to a Word Document
2007/06/15 Javascript
checkbox 多选框 联动实现代码
2008/10/22 Javascript
Firefox window.close()的使用注意事项
2009/04/11 Javascript
jQuery防止click双击多次提交及传递动态函数或多参数
2014/04/02 Javascript
探究Javascript模板引擎mustache.js使用方法
2016/01/26 Javascript
微信小程序 video详解及简单实例
2017/01/16 Javascript
实例分析nodejs模块xml2js解析xml过程中遇到的坑
2017/03/18 NodeJs
Jquery+Ajax+xml实现中国地区选择三级联动菜单效果(推荐)
2017/06/09 jQuery
微信小程序组件 marquee实例详解
2017/06/23 Javascript
使用axios实现上传图片进度条功能
2017/12/21 Javascript
浅谈Vue 数据响应式原理
2018/05/07 Javascript
使用虚拟环境打包python为exe 文件的方法
2019/08/29 Python
如何向scrapy中的spider传递参数的几种方法
2020/11/18 Python
django中ImageField的使用详解
2020/12/21 Python
python自动生成证件号的方法示例
2021/01/14 Python
html5仿支付宝密码框的实现代码
2017/09/06 HTML / CSS
详解H5 活动页之移动端 REM 布局适配方法
2017/12/07 HTML / CSS
英国打印机墨盒销售网站:Ink Factory
2019/10/07 全球购物
小学三好学生事迹材料
2014/08/15 职场文书
党员个人年度总结
2015/02/14 职场文书
2015年感恩节活动总结
2015/03/24 职场文书
2015年行政助理工作总结
2015/04/30 职场文书
深度学习小工程练习之垃圾分类详解
2021/04/14 Python
Mysql Online DDL的使用详解
2021/05/20 MySQL
剖析后OpLog订阅MongoDB的数据变更就没那么难了
2022/02/24 MongoDB
「我的青春恋爱物语果然有问题。-妄言录-」第20卷封面公开
2022/03/21 日漫
动画「半妖的夜叉姬」新BD特典图公开
2022/03/22 日漫