【问题标题】:Python Array Slice With Comma?带逗号的 Python 数组切片?
【发布时间】:2012-04-15 21:00:02
【问题描述】:

我想知道在切片 Python 数组时逗号的用途是什么 - 我有一个似乎可以工作的示例,但对我来说看起来很奇怪的行是

p = 20*numpy.log10(numpy.abs(numpy.fft.rfft(data[:2048, 0])))

现在,我知道在对数组进行切片时,第一个数字是开始,下一个是结束,最后一个是步骤,但是结束数字后面的逗号表示什么?谢谢。

【问题讨论】:

    标签: python list numpy slice


    【解决方案1】:

    它被用于从二维数组中提取特定的

    因此,您的示例将从前 2048 行(0 到 2047)中提取第 0 列(第一列)。但请注意,此语法仅适用于 numpy 数组,不适用于一般的 python 列表。

    【讨论】:

    • 感谢您指定此语法仅适用于 numpy 数组而不适用于一般 python,尝试使其适用于 vanilla Python 时我有点头疼。
    • 我很困惑:“语法内容”如何与包一起工作? 一般不应该接受“语法的东西”,所以在香草中,应该吗? numpy 包是否修改了解释器/编译器? (我来自 Java 和 C,所以在我的脑海中,语法是固定不变的)
    • 它适用于包,因为他们已经为他们的__getitem__ 函数实现了相关行为。 Python 只是传入相关参数,但常规的 2D 列表不知道如何处理它。在此处查看更多信息stackoverflow.com/questions/21165751/…
    • 明确地说,语法上没有区别。 Python 支持使用括号中的任何对象,numpy 选择使用元组。
    【解决方案2】:

    经验 - 使用 numpy 创建一个数组

    m = np.fromfunction(lambda i, j: (i +1)* 10 + j + 1, (9, 4), dtype=int)
    

    将如下所示的数组分配给m

    array(
          [[11, 12, 13, 14],
           [21, 22, 23, 24],
           [31, 32, 33, 34],
           [41, 42, 43, 44],
           [51, 52, 53, 54],
           [61, 62, 63, 64],
           [71, 72, 73, 74],
           [81, 82, 83, 84],
           [91, 92, 93, 94]])
    

    现在切片

    m[:,0]
    

    给我们

    array([11, 21, 31, 41, 51, 61, 71, 81, 91])
    

    我可能误解了可汗学院(所以请谨慎对待):

    在线性代数方面,m[:,n] 采用 nth 的列向量 矩阵m

    请参阅 Abhranil 的说明,此特定解释如何仅适用于 numpy

    【讨论】:

    • 这应该是顶部,因为顶部链接已失效。
    【解决方案3】:

    它用一个元组切片。元组的确切含义取决于被切片的对象。在 NumPy 数组中,它对 n 维数组执行 m 维切片。

    >>> class C(object):
    ...   def __getitem__(self, val):
    ...     print val
    ... 
    >>> c = C()
    >>> c[1:2,3:4]
    (slice(1, 2, None), slice(3, 4, None))
    >>> c[5:6,7]
    (slice(5, 6, None), 7)
    

    【讨论】:

    • 好的,所以我试图理解 - 逗号基本上是给你两个单独的切片?编辑:但它对每个单独的切片都这样做吗?就像 c[5:6, 7] 将返回 c 数组中每个第五个值的第七个索引(就像 c 数组中的第五个值是另一个数组或列表一样)?
    • 好吧,如果我猜对了,逗号将返回数组的一列(例如,以最简单的形式,二维数组)?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-06-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-11-10
    相关资源
    最近更新 更多