【问题标题】:How can I provide syntactic sugar for slicing a numpy array?如何为切片 numpy 数组提供语法糖?
【发布时间】:2019-03-11 10:51:06
【问题描述】:

我想通过执行以下操作来编写更具可读性的代码:

import numpy as np

SLICE_XY = slice(0, 2)
SLICE_Z = slice(2, 3)

data = np.array([[0, 1, 2],
                 [3, 4, 5],
                 [6, 7, 8],
                 [9, 10, 11]])

xy = data[:, SLICE_XY]
z = data[:, SLICE_Z]

但是,我遇到了执行上述操作的问题

>>> xy
array([[ 0,  1],
       [ 3,  4],
       [ 6,  7],
       [ 9, 10]])
>>> z
array([[ 2],
       [ 5],
       [ 8],
       [11]])

这是我对xy 的期望。但是对于z,我希望它相当于

>>> data[:, 2]
array([ 2,  5,  8, 11])

注意:

>>> data[:, 0:2]
array([[ 0,  1],
       [ 3,  4],
       [ 6,  7],
       [ 9, 10]])

【问题讨论】:

  • This answer 有助于将切片符号转换为可以存储的元组。例如你可以说SLICE_Z = slice(None, None, None), 2 然后z = data[SLICE_Z]
  • np.s_np.r_ 也可能有用。

标签: python numpy numpy-indexing


【解决方案1】:
SLICE_Z = 2

根据设计,arr[0:1] 与 arr[0] 不同。切片总是返回可迭代对象。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-12-11
    • 2011-08-30
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多