理解Numpy中 [, ...] 即使用三个点的数据切片方式

    为什么要写这个博客呢?当我第一次在代码中看到 A[0, ...] ,我还以为代码出bug了。随后我就测试了一下,没想到不仅没bug,而且功能还很强大,故写一个博客供大家参考。

 

创建随机数组

import numpy as np

a = np.random.randn(3,3,3)
print(a)

输出结果:
array([[[ 0.48999556,  0.34881712, -0.50757021],
        [ 1.51518878, -0.4822477 ,  1.12546929],
        [-0.39576487, -1.83399197,  1.25517991]],

       [[ 0.70912873, -0.81894408, -0.48782852],
        [ 0.21375399, -0.02001845, -0.96130337],
        [-0.1990111 , -1.32020791,  1.32054848]],

       [[ 0.75863401, -0.44941969, -1.41434435],
        [-0.28707215, -0.372091  , -0.29244595],
        [ 0.54015166,  1.09935533,  1.41316135]]])

    在开始下面的测试之前,需要大家理解Numpy中axis的定义,如果不清楚的话,可以参考我的这一篇博客: 理解Numpy中axis的正确姿势

测试一

a[0, ...]

输出结果:
array([[ 0.48999556,  0.34881712, -0.50757021],
       [ 1.51518878, -0.4822477 ,  1.12546929],
       [-0.39576487, -1.83399197,  1.25517991]])

    测试一理解:指定a数组的第0维度下第0个位置的数组,...代表选取剩余维度下所有的内容,并保持该内容的维度不变。

测试二

a[1, ..., 2]

输出结果:
array([-0.48782852, -0.96130337,  1.32054848])

    测试二理解:指定a数据第0维度下的第1个位置的数组,...代表选取第1维度下的所有内容,2代表第三维度下第二个位置所代表的数组

测试三

a[1, 2, ...]

输出结果:
array([-0.1990111 , -1.32020791,  1.32054848])

    测试三理解:指定a第0维度下的第一个位置,2代表第1维度下的第2个位置,...代表第三维度下的所有内容

 

测试四

a[1, 2, 2]

输出结果:
1.320548483581948

    测试四理解:取指定位置的数值

总结

    这个[...]的方式切片理解起来较抽象,而且搜的时候还不知道搜什么关键字。那主要的理解重点在于:知道每一维度代表什么,...表示选择所有,就ok了

本文为作者原创,转载需注明出处!

发布了21 篇原创文章 · 获赞 60 · 访问量 5万+

猜你喜欢

转载自blog.csdn.net/GodWriter/article/details/93592148