对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编写android截屏脚本双击运行即可
Jul 21 Python
Python性能提升之延迟初始化
Dec 04 Python
Python 操作MySQL详解及实例
Apr 30 Python
使用python实现tcp自动重连
Jul 02 Python
python和ruby,我选谁?
Sep 13 Python
tornado 多进程模式解析
Jan 15 Python
Python元组及文件核心对象类型详解
Feb 11 Python
Python OpenCV中的resize()函数的使用
Jun 20 Python
python实现按键精灵找色点击功能教程,使用pywin32和Pillow库
Jun 04 Python
增大python字体的方法步骤
Jul 05 Python
Python Merge函数原理及用法解析
Sep 16 Python
详解Anaconda安装tensorflow报错问题解决方法
Nov 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
定制404错误页面,并发信给管理员的程序
2006/10/09 PHP
深入解析php之sphinx
2013/05/15 PHP
php使用codebase生成随机数
2014/03/25 PHP
PHP面向对象之工作单元(实例讲解)
2017/06/26 PHP
THINKPHP5.1 Config的配置与获取详解
2020/06/08 PHP
jQuery 操作XML入门
2008/12/25 Javascript
jquery插件制作教程 txtHover
2012/08/17 Javascript
JQuery EasyUI 加载两次url的原因分析及解决方案
2014/08/18 Javascript
JavaScript中的操作符==与===介绍
2014/12/31 Javascript
javascript判断复选框是否选中的方法
2015/10/16 Javascript
js实现纯前端的图片预览
2016/04/27 Javascript
jQuery基于toggle实现click触发DIV的显示与隐藏问题分析
2016/06/12 Javascript
Vuejs第十二篇之动态组件全面解析
2016/09/09 Javascript
聊一聊JS中的prototype
2016/09/29 Javascript
JS中去掉array中重复元素的方法
2017/05/26 Javascript
React Native 截屏组件的示例代码
2017/12/06 Javascript
Kettle中使用JavaScrip调用jar包对文件内容进行MD5加密的操作方法
2020/09/04 Javascript
利用vue3+ts实现管理后台(增删改查)
2020/10/30 Javascript
three.js 实现露珠滴落动画效果的示例代码
2021/03/01 Javascript
python3之微信文章爬虫实例讲解
2017/07/12 Python
Python使用正则表达式获取网页中所需要的信息
2018/01/29 Python
浅析Python pandas模块输出每行中间省略号问题
2018/07/03 Python
Python之lambda匿名函数及map和filter的用法
2019/03/05 Python
使用python PIL库实现简单验证码的去噪方法步骤
2019/05/10 Python
详解Python self 参数
2019/08/30 Python
pytorch 模型的train模式与eval模式实例
2020/02/20 Python
解决jupyter notebook打不开无反应 浏览器未启动的问题
2020/04/10 Python
python模拟斗地主发牌
2020/04/22 Python
DAWGS鞋官方网站:鞋,凉鞋,靴子
2016/10/04 全球购物
Europcar澳大利亚官网:全球汽车租赁领域的领导者
2019/03/24 全球购物
英国奢华护肤、美容和Spa品牌:Temple Spa
2019/11/02 全球购物
毕业自我鉴定怎么写
2014/03/25 职场文书
住宅使用说明书
2014/05/09 职场文书
2014年财务工作总结与计划
2014/12/08 职场文书
Nginx本地目录映射实现代码实例
2021/03/31 Servers
Java用自带的Image IO给图片添加水印
2021/06/15 Java/Android