【问题标题】:Python - Numpy array index as tuplePython - 作为元组的 Numpy 数组索引
【发布时间】:2018-07-10 14:19:52
【问题描述】:

如果我们用 Numpy 创建一个数组,我们可以使用 numpy 库提供的许​​多功能。

例如如果c 是一个矩阵

print(c[:,1])

将打印第 1 列中的每个值。

现在,当我以这种方式索引 c 矩阵时,我是否使用元组进行索引?如果是的话,怎么可能有一个里面有':'的元组?

【问题讨论】:

  • 您是在问切片是如何工作的还是如何在元组中包含 ':' 字符?
  • print(c[EMPTY:EMPTY,1]) 比较好理解。
  • @doctorlove:我认为 Tantaros 想了解 Numpy 如何在内部处理这些切片。

标签: python numpy


【解决方案1】:

冒号语法是slice(..) 对象的语法糖。你的表达相当于:

#        v slice object
print(c[(slice(None), 1)])
#       ^   tuple      ^

所以你传递了一个元组,其中包含一个 slice(None) 对象作为第一个元素,1 作为第二个元素。

切片语法到slice(..)对象的映射如下:

  1. 冒号:等价于slice(None)
  2. 如果是:b,则等价于slice(b)
  3. a: 等价于slice(a, None)
  4. a:b 等价于slice(a, b)
  5. ::c 等价于slice(None, None, c)
  6. :b:cslice(None, b, c);
  7. a::c 等价于slice(a, None, c);和
  8. a:b:cslice(a, b, c)

请注意,切片语法仅在 itemgetter 的上下文中受支持(因此 x[..])。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-05-12
    • 1970-01-01
    • 2015-08-16
    • 2015-08-15
    • 1970-01-01
    • 2019-06-02
    • 2022-01-02
    相关资源
    最近更新 更多