numpy中三维数组中加入元素后的位置详解

yipeiwu_com6年前Python基础

今天做数据处理时,遇到了从三维数组中批量加入二维数组的需求。其中三维数组在深度学习的特征数据处理时经常会使用到,所以读者有必要对该小知识点做到清楚了解并掌握。现对三维数组中的元素位置结合代码做详细归纳总结,方便日后查阅和为网友答疑!

图示效果图:

直接贴代码:

def test3D():
 import numpy as np
 data_array = np.zeros((3, 5, 6), dtype=np.int)
 data_array[1, 2, 2] = 1
 
 print(data_array)

介绍:通过np.zeros创建一个3行5列6个通道的三维数组,并给第二个通道的第一行第二列赋值1.

运行结果图:

分析: 有运行结果可知,创建了六个通道,在深度学习中这六个通道相当于六个Feature Map,对应结果图中的六列。

再向外看一层,共有三个块,每个块代表这个通道的第几行数据。

每个块里有五行数据,每一行代表每个通道的第几列数据

所以,代码中的赋值语句: data_array[1, 2, 2] = 1

表示为第2个通道,下标从0开始,所以在图中位置为第三列;第1行第2列,下标从0开始,所以图中表示第二个块的第三行;即为图中所示位置。

补充:三维数组的求和

多维数组的轴(axis=)是和该数组的size(或者shape)的元素是相对应的;

>>> np.random.seed(123)
>>> X = np.random.randint(0, 5, [3, 2, 2])
>>> print(X)
 
[[[5 2]
 [4 2]]
 
 [[1 3]
 [2 3]]
 
 [[1 1]
 [0 1]]]
 
>>> X.sum(axis=0)
array([[7, 6],
  [6, 6]])
 
>>> X.sum(axis=1)
array([[9, 4],
  [3, 6],
  [1, 2]])
 
>>> X.sum(axis=2)
array([[7, 6],
  [4, 5],
  [2, 1]])

如果将三维数组的每一个二维看做一个平面(plane,X[0, :, :], X[1, :, :], X[2, :, :]),三维数组即是这些二维平面层叠(stacked)出来的结果。则(axis=0)表示全部平面上的对应位置,(axis=1),每一个平面的每一列,(axis=2),每一个平面的每一行。

以上这篇numpy中三维数组中加入元素后的位置详解就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持【听图阁-专注于Python设计】。

相关文章

基于python分析你的上网行为 看看你平时上网都在干嘛

基于python分析你的上网行为 看看你平时上网都在干嘛

简介 想看看你最近一年都在干嘛?看看你平时上网是在摸鱼还是认真工作?想写年度汇报总结,但是苦于没有数据?现在,它来了。 这是一个能让你了解自己的浏览历史的Chrome浏览历史记录分析程...

python使用Flask操作mysql实现登录功能

python使用Flask操作mysql实现登录功能

用到的一些知识点:Flask-SQLAlchemy、Flask-Login、Flask-WTF、PyMySQL 这里通过一个完整的登录实例来介绍,程序已经成功运行,在未登录时拦截了suc...

python实现识别手写数字 python图像识别算法

python实现识别手写数字 python图像识别算法

写在前面 这一段的内容可以说是最难的一部分之一了,因为是识别图像,所以涉及到的算法会相比之前的来说比较困难,所以我尽量会讲得清楚一点。 而且因为在编写的过程中,把前面的一些逻辑也修改了一...

Python的条件表达式和lambda表达式实例

条件表达式 条件表达式也称为三元表达式,表达式的形式:x if C else y。流程是:如果C为真,那么执行x,否则执行y。 经过测试x,y,C可以是函数,表达式,常量等等; de...

Flask教程之重定向与错误处理实例分析

本文实例讲述了Flask教程之重定向与错误处理。分享给大家供大家参考,具体如下: Flask类有一个redirect()方法. 当我们调用它时, 它会返回一个响应对象并且按指定的状态码将...