Numpy 三维数组索引与切片的实现

 更新时间:2023年03月22日 10:17:16   作者:算力鬼才信  
本文主要介绍了Numpy 三维数组索引与切片,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧

在本篇的开始之前,我必须阐明,我们对数组无论是索引还是切片,我是通过编号(或称为序列号)来进行操作,请记住:无论是 0轴(行)还是 1轴(列),编号都是从0开始

这是一个三维数组,关于如何判断所定义的是几维数组,请观察数组的开头和结尾的中括号数目

import numpy as np
#这是一个 2x2x3 的三维数组
arr =np.array( [[[0, 1 ,2] ,[3, 4, 5]] ,[[6 ,7, 8],[9,10,11]]])
print(arr)

在多维数组中,如果你忽略后续的索引参数,他打印出的结果将会降低一个维度

我将会打印它的完整数组,以便大家用以比对

将定义的三维数组降低了一个维度,成为了二维数组

#打印以下结果
arrs = arr[1,2]
#index 2 is out of bounds for axis 1 with size 2    索引2超出大小为2的轴1的范围

我们可以分析一下出现这种问题的原因:

1,首先我这是索引,arr[1,2] 的含义是,取编号是1的行,编号是2的行,我们可以思考一下,三维数组降低一个维度应是二维数组,二维数组降低一个维度应是一维数组,arr[1,2]中的“1”呢,应是三维数组中的编号为“1”的行,三维数组中编号为“1”的行,应是一个二维数组,arr[1,2]中的“2”呢,应该在二维数组的基础上,就要降低一个维度,为一维数组,在下图中一维数组只有两行,编号分别为“0”和“1”哪里来的编号为“2”呢?是不是超出索引范围了。

同样对三维数组来说,我们也可以使用类似视图的操作

arr =np.array( [[[0, 1 ,2] ,[3, 4, 5]] ,[[6 ,7, 8],[9,10,11]]])
print(arr)
#打印以下结果
new_long = arr[0]
new_long = 22
print(arr)

我们经过将arr 三维数组中的编号为“0”的行arr[0]拿出来,赋值给了变量名new_long ,然后将new_long进行重新赋值为 “22”,new_long的值其实就是 arr[0]的值,我们将三维数组arr的打印出来,显然数组的元素值并没有发生任何变化。有的同学会问这有什么意义呢?

我们可以对数组切片做同样的操作来看看变化

import numpy as np
#这是一个 2x2x3 的三维数组
arr =np.array( [[[0, 1 ,2] ,[3, 4, 5]] ,[[6 ,7, 8],[9,10,11]],[[12,13,14],[15,16,17]]])
print(arr)
#打印以下结果
#我把arr三维数组中编号为“1”,和编号为“2”的数组拿了出来赋值给一个新定义的变量名new_long
new_long = arr[0:2]
# print(new_long)
#我对new_long中的数据进行了篡改
new_long[0] = 22
# arr[0] = new_long
#但是当我打印最初定义的三维数组 arr时,发现它的数据被篡改
print(arr)

你看发生了变化,我将三维数组中前两行拿了出来,是两个二维数组,然后我对第一个二维数组进行篡改当我再次打印最初定义的三维数组时发现它的数据发生了变化。最初定义的数组也被篡改了

说明了什么在numpy模块中定义的数组无论是几维,都遵循一个定义数组的切片是原数组的视图,任何对于视图的修改都会反映到原数组上。

到此这篇关于Numpy 三维数组索引与切片的实现的文章就介绍到这了,更多相关Numpy 三维数组索引与切片内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • python-3.5.3安装及一些库安装教程详解

    python-3.5.3安装及一些库安装教程详解

    这篇文章主要介绍了python-3.5.3安装及一些库安装教程,本文通过图文并茂的形式给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2021-03-03
  • 利用python查看官方文档

    利用python查看官方文档

    这篇文章主要介绍了利用python查看官方文档,我们在学习和工作中,总是会遇到一些问题,或许官方文档能解决这一问题,下面我们就来看看python如何查看官方文档吧
    2022-01-01
  • Django Sitemap 站点地图的实现方法

    Django Sitemap 站点地图的实现方法

    这篇文章主要介绍了Django Sitemap 站点地图的实现方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2019-04-04
  • 解析Python的缩进规则的使用

    解析Python的缩进规则的使用

    这篇文章主要介绍了解析Python的缩进规则的使用,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2019-01-01
  • Python函数基本使用原理详解

    Python函数基本使用原理详解

    这篇文章主要介绍了Python函数基本使用原理详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2020-03-03
  • Python实现的多线程同步与互斥锁功能示例

    Python实现的多线程同步与互斥锁功能示例

    这篇文章主要介绍了Python实现的多线程同步与互斥锁功能,涉及Python多线程及锁机制相关操作技巧,需要的朋友可以参考下
    2017-11-11
  • 关于Pycharm配置翻译插件Translation报错更新TTK失败不能使用的问题

    关于Pycharm配置翻译插件Translation报错更新TTK失败不能使用的问题

    这篇文章主要介绍了关于Pycharm配置翻译插件Translation报错更新TTK失败不能使用的问题,本文通过图文并茂的形式给大家分享解决方案,需要的朋友可以参考下
    2022-04-04
  • Python中的数学运算操作符使用进阶

    Python中的数学运算操作符使用进阶

    这篇文章主要介绍了Python中的数学运算操作符使用进阶,也包括运算赋值操作符等基本知识的小结,需要的朋友可以参考下
    2016-06-06
  • python实现两个经纬度点之间的距离和方位角的方法

    python实现两个经纬度点之间的距离和方位角的方法

    今天小编就为大家分享一篇python实现两个经纬度点之间的距离和方位角的方法,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2019-07-07
  • pytorch中tensor的合并与截取方法

    pytorch中tensor的合并与截取方法

    今天小编就为大家分享一篇pytorch中tensor的合并与截取方法,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2018-07-07

最新评论