无法理解 matplotlib 的示例,其中省略号和冒号可能与索引相关联

Posted

技术标签:

【中文标题】无法理解 matplotlib 的示例,其中省略号和冒号可能与索引相关联【英文标题】:Can't understand a matplotlib's example where there are both ellipsis and colons probably associated with indices 【发布时间】:2012-05-12 16:37:50 【问题描述】:

我对这个 ma​​tplotlib 的 example 有疑问。

这是我不明白的部分

def update_line(num, data, line):
    line.set_data(data[...,:num])
    return line,

line.set_data(data[...,:num]) 是做什么的?

【问题讨论】:

【参考方案1】:

这是 numpy 提供的一种特殊语法,用于在多维数组中进行切片。一般语法是a[s1,s2, ... , sn],其中si 是用于通常切片或索引序列的表达式,并在第i 个维度定义所需的切片。例如,a[5,2:3,1::2]

... 是获取所有维度的完整切片的缩写。例如,a[...,3]a[:,:,3] 的缩写,如果 a 是三维的。

【讨论】:

【参考方案2】:

它实际上是一个numpy 符号。在numpy 中,...(省略号)用作可变数量的: 切片的占位符。

来自docs:

省略号扩展为 : 进行选择所需的对象数 与 x.ndim 长度相同的元组。只有第一个省略号是 展开后,任何其他都被解释为:。

用法:

In : x = numpy.array(range(8)).reshape(2,2,2)

In : x
Out:
array([[[0, 1],
        [2, 3]],

       [[4, 5],
        [6, 7]]])

In : x[...,0]
Out:
array([[0, 2],
       [4, 6]])

In : x[:,:,0]
Out:
array([[0, 2],
       [4, 6]])

【讨论】:

以上是关于无法理解 matplotlib 的示例,其中省略号和冒号可能与索引相关联的主要内容,如果未能解决你的问题,请参考以下文章

使用 matplotlib 的 PCA 基本示例

无法使用 ffmpeg 保存 matplotlib 动画

python matplotlib的常见参数以及画图示例

无法从脚本加载 matplotlib.pyplot

格式化字符串攻击原理及示例

matplotlib 中的 3D 离散热图