对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创建声明性迷你语言的教程
Apr 13 Python
python清除指定目录内所有文件中script的方法
Jun 30 Python
python抽取指定url页面的title方法
May 11 Python
OpenCV2从摄像头获取帧并写入视频文件的方法
Aug 03 Python
Python简单处理坐标排序问题示例
Jul 11 Python
django+echart数据动态显示的例子
Aug 12 Python
Python动态声明变量赋值代码实例
Dec 30 Python
Python语法之精妙的十个知识点(装B语法)
Jan 18 Python
PyCharm永久激活方式(推荐)
Sep 22 Python
Python3开发实例之非关系型图数据库Neo4j安装方法及Python3连接操作Neo4j方法实例
Mar 18 Python
python中的装饰器该如何使用
Jun 18 Python
Python实现科学占卜 让视频自动打码
Apr 09 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
javascript 点击整页变灰的效果(可做退出效果)。
2008/01/09 Javascript
理解Javascript_06_理解对象的创建过程
2010/10/15 Javascript
js验证电话号码与手机支持+86的正则表达式
2014/01/23 Javascript
js和jquery使按钮失效为不可用状态的方法
2014/01/26 Javascript
用Jquery选择器计算table中的某一列某一行的合计
2014/08/13 Javascript
jQuery之DOM对象和jQuery对象的转换与区别分析
2015/01/08 Javascript
JS实现旋转木马式图片轮播效果
2017/01/18 Javascript
jQuery读取XML文件的方法示例
2017/02/03 Javascript
js上下视差滚动简单实现代码
2017/03/07 Javascript
Vue中的ref作用详解(实现DOM的联动操作)
2017/08/21 Javascript
微信小程序选择图片和放大预览图片功能
2017/11/02 Javascript
JS中offset和匀速动画详解
2018/02/06 Javascript
Vue2.0生命周期的理解
2018/08/20 Javascript
微信小程序如何调用图片接口API并居中显示
2019/06/29 Javascript
JS实现简易留言板增删功能
2020/02/08 Javascript
Vue自定义组件的四种方式示例详解
2020/02/28 Javascript
[51:26]DOTA2上海特级锦标赛主赛事日 - 2 胜者组第一轮#3Secret VS OG第二局
2016/03/03 DOTA
Python实现字典的key和values的交换
2015/08/04 Python
Pycharm无法使用已经安装Selenium的解决方法
2018/10/13 Python
python处理大日志文件
2019/07/23 Python
Django 响应数据response的返回源码详解
2019/08/06 Python
python3 assert 断言的使用详解 (区别于python2)
2019/11/27 Python
Django框架获取form表单数据方式总结
2020/04/22 Python
CSS3为背景图设置遮罩并解决遮罩样式继承问题
2020/06/22 HTML / CSS
校班主任推荐信范文
2013/12/03 职场文书
大学生如何写自荐信
2014/01/08 职场文书
2014年小学元旦活动方案
2014/02/12 职场文书
委托书范本
2014/04/02 职场文书
学习保证书范文
2014/04/30 职场文书
学校综治宣传月活动总结
2014/07/02 职场文书
三好生演讲稿
2014/09/12 职场文书
党员应该树立反腐倡廉的坚定意识思想汇报
2014/09/12 职场文书
2015幼儿园庆元旦活动方案
2014/12/09 职场文书
学校食堂管理制度
2015/08/04 职场文书
销区经理年终述职报告模板
2019/11/28 职场文书
vue如何实现关闭对话框后刷新列表
2022/04/08 Vue.js