【问题标题】:Store Slice Index as Object将切片索引存储为对象
【发布时间】:2017-03-16 12:42:01
【问题描述】:

假设我有一个列表列表等......有一定深度:

ExampleNestedObject = numpy.ones(shape = (3,3,3,3,3))

一般我可以通过写来获得一个元素:

#Let:
#a, b, c, d, e -> are integers

print ExampleNestedObject[a][b][c][d][e]

#numpy also happens to allow:

print ExampleNestedObject[(a,b,c,d,e)]

#python in general allows:

print ExampleNestedObject[a,b,:,d,e]

我的问题是 -> 如何将索引“a,b,:,d,e”存储为对象?

SomeSliceChoice = a,b,:,d,e

print ExampleNestedObject[SomeSliceChoice]

【问题讨论】:

  • 我在这里看到了这个问题的 numpy 特定版本:stackoverflow.com/questions/6795657/… 虽然我仍然对通用 python 解决方案感兴趣
  • numpy 数组不是列表。
  • 该解决方案是通用的。
  • 好的,我接受。我的问题是重复的,具有更好的 google-able 标题。
  • 结果证明这个解决方案不适用于嵌套的 python 对象。见stackoverflow.com/questions/64419760

标签: python numpy indexing nested


【解决方案1】:

诀窍是将索引对象视为切片对象的元组。

示例 1:

Object[1,2,:] == Object[(1,2,slice(None,None,None))]

示例2:

WantedSliceObject = (1,2,slice(None,None,None), 4,5)
Object[1,2,:,4,5] == Object[WantedSliceObject]

注意'''slice的语法:

#slice(start, stop[, step])

#1 ==  slice(1, 2, 1)

WantedSliceObject2 = (
   slice(1, 2, 1),
   slice(2, 2, 1),
   slice(None,None,None), 
   slice(4, 2, 1),
   slice(5, 2, 1)
   )

#WantedSliceObject2 == WantedSliceObject

【讨论】:

    猜你喜欢
    • 2019-03-23
    • 1970-01-01
    • 2012-06-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-12-31
    • 2018-07-29
    • 1970-01-01
    相关资源
    最近更新 更多