python numpy tenforflow中维度的概念是什么呢?

怎么用python语言来表示维度呢?

我们在利用深度学习进行目标检测的过程中,经过会进行批量图片的处理,常见格式为(batchsize,size,size,channel)四维的矩阵。或者yolo3 backbone输出的矩阵(batch,feature_map_size,feature_map_size,anchor_num,(xmin,ymin,xmax,ymax,socre,class1,...,classn))等。在处理过程中,经常会涉及到对矩阵的各个维度的操作。

比如:

增加维度

减少维度

对某一维度进行取值

对不同维度直间进行比较

对不同维度求均值

等等。

例1:提取多维矩阵中特定维度的前n个"数"(此处用"数"表示感觉不太准确,一维矩阵可以说是“数”,多维矩阵应该是“向量”,如果您有更好的表述,欢迎留言讨论)

我们首先,创建一个最简单的一维矩阵

import numpy as np
a=np.array([1,2,3,4])
print(a.shape)
=》(4,)

利用shape方法获取矩阵的维度,可以看到矩阵是一维的,里面有四个数字,如果我们想获取矩阵中的某些数字,可以利用python的切片功能,在python中[]可以理解为是切片的代名词。继续上面的例子,

import numpy as np
a=np.array([1,2,3,4])
print(a.shape)
=》(4,)
print(a[0])#获取第0个元素
=>1
print(a[0,1])#会报错
print(a[0:2])#获取前两个元素
=》1,2
print([:])

关于维度在numpy中的理解,我们可以这样理解,[]中用逗号","隔开的是不同的维度,每一个维度的数据获取可以用:切片进行操作,其中[...,]三个点代表前面所有的维度,:表示去这一维度所有数,::表示取这一维度从strat到end的数,:::表示start-end-step每隔step取数。

例2:通过python中numpy.mean()函数,深度理解axis的含义

numpy.mean()传送门
numpy.mean(a, axis=None, dtype=None, out=None, keepdims=)
a:为array形的数据
axis:
科普下,axis=0表示纵轴的方向,axis=1表示横轴的方向
1)axis为二维array时:axis可为0,1两个方向轴
不填时默认为a全部元素的平均值
axis=0 表示纵轴平均,输出的是格式(1,x)的格式
axis=1表示横轴的平均,输出的是(x,1)的格式
2)axis为三维array时
axis可以为0,1,2表示三个方向轴,用tuple来表示取哪两个维度的数值作为平均,即对一个平面进行取平均
3)axis为n维array时
如果这是一个整数元组,则在多个轴上执行平均值,而不是像以前那样在单个轴或所有轴上执行。
可取n-1个轴

举例:
设a为(m,n)的array,则axis中0,1分别代表纵轴和横轴

>>> a = np.arange(15)
>>> a = a.reshape(3,5)
>>> a
array([[ 0,  1,  2,  3,  4],[ 5,  6,  7,  8,  9],[10, 11, 12, 13, 14]])
#取全部的平均值
>>> np.mean(a)
7.0#取纵轴上的平均值
>>> np.mean(a,axis=0)
array([5., 6., 7., 8., 9.])#取横轴上的平均值
>>> np.mean(a,axis=1)
array([ 2.,  7., 12.])

设a为(m,n,k)的array,则axis中的0,1,2分别代表三个轴
若axis为(0,1),则相当于把m,n这两条轴压平(m,n轴上的m*n个数值求平均),输出格式为(1,k)的数值

#设a为(2,3,4)的array
>>> a = np.arange(24)
>>> a = a.reshape(2,3,4)
>>> a
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]]])#对第二轴上的数字取平均,压缩成(2,4)输出了
>>> np.mean(a,axis=1)
array([[ 4.,  5.,  6.,  7.],[16., 17., 18., 19.]])#将0,1轴方向的2*3个数值取平均
>>> np.mean(a,axis=(0,1))
array([10., 11., 12., 13.])#将0,2轴方向的2*4个数值取平均
>>> np.mean(a,axis=(0,2))
array([ 7.5, 11.5, 15.5])

以上情况可以类比到n维,不再举例

python数据分析基础——numpy(数据结构基础)

import numpy as np:

1、python数据分析主要的功能实现模块包含以下六个方面:
(1)numpy——数据结构基础
(2)Scipy——强大的数据计算(矩阵计算、信号处理、数理分析等)
(3)matplotlib——可视化图形功能模块,实现数据的图形可视化)
(4)pandas——基础数据分析方法
(5)scikit-learn——强大的数据分析建模库,主要用于数据挖掘
(6)Keras——人工神经网络,实现人工神经网络的数据分析应用

2、对于numpy模块,它是python里面一个开源的数据计算模块,可以实现的功能主要有:ndarray、多维数组以及线性代数相关数据分析

3、对于numpy数据结构以及数据类型的定义举例如下:
numpy1=numpy.array(list1 dtype=numpy.float),其数据结构的类型是numpy.ndarray

4、对于数组的输入标准形式如下:
list=[[1,2,3],[1,2,4],[2,3,4],[1,3,5]]
np1=np.array(list,dtype=np.float)
其中有以下几个常见的属性:
np1.shape:数组的长宽尺寸(mxn)
np1.ndim:数据的维数,这里指的是数据列表嵌套的层数
np1.dtype:数据的类型
np1.itemsize:只要是指数据所占自己的大小
np1.size:指整个数据结构所包含的数据元素个数
len(np1)是指数据结构的真正维数,即数组的行数

5、对于输入数据数组(或者说是矩阵)的其中元素提取方法如下:
np1[a:b,c:d]
这里是指提取数组np1的第a+1行到第b行,第c+1列到第d列的数据模块,举例如下:

6、对于python随机数的生成可以用numpy模块里的random模块:
np1.random.rand(0-1之间的的随机数生成)\randn(服从正态分布的随机数生成)\randint(随机整数的生成)\choice([])(随机数产生的范围自定义)\......(其他随机数类型),举例如下:


7、矩阵数组之间的运算:+-*/(加减乘除)以及点乘
其中最为常用的点乘函数规则如下:
np.dot(矩阵1,矩阵2)

8、多维数组之间的运算(sum、max、min等)需要先对其进行数组的分层,可以用axis=0-维数-1来进行分层,具体例子如下:

9、对于矩阵之间的拼接:
(1)np.concatenate((list1,list2),axis=0):矩阵之间的拼接
(2)np.vstack((list1,list2)):矩阵之间的上下纵向追接(列数)
(3)np.hstack((list1,list2)):矩阵之间的横向拼接,所以不同矩阵的维数(行数)必须保证相同

部分转载于:https://www.cnblogs.com/Yanjy-OnlyOne/p/11165139.html

例三:关于利用yolo3进行目标检测中用到的矩阵知识,见github,欢迎加星点赞。

矩阵 维度 axis相关推荐

  1. python维度扩展_在TensorFlow中实现矩阵维度扩展

    一般TensorFlow中扩展维度可以使用tf.expand_dims().近来发现另一种可以直接运用取数据操作符[]就能扩展维度的方法. 用法很简单,在要扩展的维度上加上tf.newaxis就行了. ...

  2. python 增加维度_Python3 Tensorlfow:增加或者减小矩阵维度的实现

    1.增加维度 下面给出两个样例 样例1: [1, 2, 3] ==> [[1],[2],[3]] import tensorflow as tf a = tf.constant([1, 2, 3 ...

  3. numpy中amin()方法中维度axis=0 1 2 的理解

    https://www.jianshu.com/p/6f58d7f39147 numpy中amin()方法中维度axis=0 1 2 的理解 axis=0  从最外一层的维度来比较 (对半比较  虽然 ...

  4. 运行差分灰狼时出现 关于“索引超出数组元素的数目(0)和矩阵维度问题以及图例的问题”的解决办法

    问题一:索引超出数组元素的数目(0) 看截图,上面注释掉的libsvmpredict是出错的, 下面一句是修改后的. [~,~,fitness]=libsvmpredict(output_test,i ...

  5. matlab中除法的使用,错误使用 / 矩阵维度必须一致

    错误使用  /  矩阵维度必须一致. 当出现这个错误,说明除数符号写错了,需要从/变成./就可以了 matlab中的乘除法: 1.数字之间相乘/相除 >> a=3; >> b= ...

  6. matlab 矩阵维度必须一致,错误使用 /

    错误:错误使用  / 矩阵维度必须一致.. x = 0:0.005:0.2; y = sin(1/x) plot(x,y) 解决方法:把第二行1/x换成1./x 原因:a./b就是a.b中对应的每个元 ...

  7. MATLAB“内部矩阵维度必须一致”(及要注意数组的乘法运算是要带点)

    举出这一题为例子 第一遍输出报错 修改后 图中可见连接exp与sin函数之间的乘号*前面如果没有"."则会报错内部矩阵维度必须一致 明显MATLAB把输入的式子当作矩阵处理了,而其 ...

  8. 谈谈我对矩阵维度的理解

    谈谈我对矩阵维度的理解 前言 一.混淆点 二.代码实现 1.矩阵相乘 总结 前言 在机器学习中,遇到的数据都是以矩阵形式存储的,那么矩阵的维度经常在变化,在编写代码应该时刻注意矩阵的维度变化,不然在参 ...

  9. CALIPSO和AEOLUS卫星数据矩阵维度统一

    提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 前言 一.矩阵维度统一 二.1.使用步骤 2.使用案例 前言 本文用于记录分享处理CALIPSO和AEOLUS卫星数据的一些 ...

  10. matlab车牌识别毕设论文,MATLAB小白一个,毕设做一个基于MATLAB的车牌识别系统,出现索引超出矩阵维度的错误。主函数和自定义函数都写出来了(书上找的),希望大神帮助...

    [fn,pn,fi]=uigetfile('AD.jpg','选择图片'); I=imread([pn fn]); figure, imshow(I); title('原始图像'); Im1=rgb2 ...

最新文章

  1. LeetCode Flatten a Multilevel Doubly Linked List(dfs)
  2. [Shell] 文件名截取的问题:bash .vs. csh
  3. c#如何实现在两个窗体(Form)间传输数据或变量
  4. html5 自定义属性data-*
  5. Java—简单的图书管理系统
  6. 前端学习(2794):实现拨打电话功能
  7. 项目宝提供的服务器,开源WebSocket服务器项目宝贝鱼CshBBrain V4.0.1 和 V2.0.2发布
  8. 计算机专业术语的通俗解释,计算机专业术语解释
  9. 一步一步学习Servlet之Session使用
  10. 雅虎被告存在重大疏忽 导致5亿账户信息被黑
  11. 系统学习机器学习之神经网络(十一) --TDNN
  12. 音乐推荐系统(协同过滤和SVD)
  13. java项目目录_Java项目目录解释
  14. 程序员如何编写高大上且实用的技术文档
  15. js根据出生日期计算年龄及根据年龄计算出生日期
  16. 二、MySQL 介绍及 MySQL 安装与配置
  17. html调整中文文字间距,HTML 中调整文字间距,行间距和文字竖排
  18. c语言24小时制转化12,在C ++中将时间从24小时制转换为12小时制
  19. cpu 指锟筋集 linux锟介看 shell,Linux Shell中PS命令中的%CPU的含义介绍
  20. java scp发送文件到服务器,Java实现往远程服务器传输文件

热门文章

  1. 周鸿祎说:编程能力比马化腾强,不如雷军。你怎么看?
  2. W11系统VMware网卡vmnet8显示未识别的网络
  3. 一个公务员的坎坷“仕途”,以及五光十色的沿途“风景”
  4. 车间能量看板设计需求,能给个思路吗
  5. 电子计算机的五个部分组成,电子计算机由哪几大部分构成?
  6. linux 飞信机器人 下载,飞信机器人FXRobot 's | CN-SEC 中文网
  7. html5 undefined,JS中typeof() !== undefined'是什么意思
  8. MySQL8.0 setup_actors执行时间统计
  9. 基于OpenCV的土壤裂缝分割系统
  10. beyong compare激活