对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实现备份文件实例
Sep 16 Python
python计算文本文件行数的方法
Jul 06 Python
python3操作微信itchat实现发送图片
Feb 24 Python
python3.4.3下逐行读入txt文本并去重的方法
Apr 29 Python
python进行两个表格对比的方法
Jun 27 Python
用python脚本24小时刷浏览器的访问量方法
Dec 07 Python
Python子类继承父类构造函数详解
Feb 19 Python
深入了解和应用Python 装饰器 @decorator
Apr 02 Python
Python3.5 Json与pickle实现数据序列化与反序列化操作示例
Apr 29 Python
利用Vscode进行Python开发环境配置的步骤
Jun 22 Python
python 多线程中join()的作用
Oct 29 Python
python中pop()函数的语法与实例
Dec 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笔记之:php数组相关函数的使用
2013/04/26 PHP
php实现文件上传基本验证
2020/03/04 PHP
Javascript 验证上传图片大小[客户端]
2009/08/01 Javascript
网页右键ie不支持event.preventDefault和event.returnValue (需要加window)
2013/02/22 Javascript
jQuery的slideToggle方法实例
2013/05/07 Javascript
jquery预览图片实现鼠标放上去显示实际大小
2014/01/16 Javascript
比较不错的JS/JQuery显示或隐藏文本的方法
2014/02/13 Javascript
jQuery设置和获取HTML、文本和值示例
2014/07/08 Javascript
Flexigrid在IE下不显示数据的有效处理方法
2014/09/04 Javascript
jquery获取radio值(单选组radio)
2014/10/16 Javascript
jQuery实现锚点scoll效果实例分析
2015/03/10 Javascript
老生常谈JQuery data方法的使用
2016/09/09 Javascript
有关JS中的0,null,undefined,[],{},'''''''',false之间的关系
2017/02/14 Javascript
vue-router实现webApp切换页面动画效果代码
2017/05/25 Javascript
利用node.js+mongodb如何搭建一个简单登录注册的功能详解
2017/07/30 Javascript
浅谈vue 多个变量同时赋相同值互相影响
2020/08/05 Javascript
python根据距离和时长计算配速示例
2014/02/16 Python
使用Python脚本将绝对url替换为相对url的教程
2015/04/24 Python
python创建列表并给列表赋初始值的方法
2015/07/28 Python
python http接口自动化脚本详解
2018/01/02 Python
python通过百度地图API获取某地址的经纬度详解
2018/01/28 Python
Python爬虫实战:分析《战狼2》豆瓣影评
2018/03/26 Python
python 通过SSHTunnelForwarder隧道连接redis的方法
2019/02/19 Python
详解Django-restframework 之频率源码分析
2019/02/27 Python
PyCharm 2019.3发布增加了新功能一览
2019/12/08 Python
Python如何在main中调用函数内的函数方式
2020/06/01 Python
详解Python3.8+PyQt5+pyqt5-tools+Pycharm配置详细教程
2020/11/02 Python
瑞典手机壳品牌:Richmond & Finch
2018/04/28 全球购物
香港中原电器网上商店:Chung Yuen
2019/06/26 全球购物
药学专业个人自我评价
2013/11/11 职场文书
培训主管的岗位职责
2013/11/23 职场文书
企业党员公开承诺书
2014/03/26 职场文书
项目经理聘任书
2014/03/29 职场文书
2015年会计个人工作总结
2015/04/02 职场文书
离婚承诺书格式范文
2015/05/04 职场文书
vue配置型表格基于el-table拓展之table-plus组件
2022/04/12 Vue.js