【问题标题】:Python funny array indexingPython 有趣的数组索引
【发布时间】:2014-03-09 21:30:48
【问题描述】:

我在 Python 中遇到了这段代码:

processed = data[:,feature_locs]

我试着用这个来测试这种代码

    ha = (3, 5, 7)
    print ha
    data = [1, 2, 3, 4, 5]
    print data[:, ha]

但我收到了TypeError

我做错了什么,上面的语法是什么意思?

【问题讨论】:

  • 你在哪里发现了第一个 sn-p?
  • 看起来像numpy使用的二维索引

标签: python arrays syntax


【解决方案1】:

这是numpy 模块支持的自定义slice 参数,用于多维数组。

>>> import numpy
>>> a = numpy.random.random((2,3))
>>> a
array([[ 0.01211291,  0.06738324,  0.11690497],
       [ 0.86175703,  0.21903569,  0.49506358]])
>>> a[:,1]
array([ 0.06738324,  0.21903569])

更多详情请参阅 numpy 文档http://docs.scipy.org/doc/numpy/reference/arrays.indexing.html

【讨论】:

    【解决方案2】:

    当您使用此语法处理二维数组(或列表列表)时,将处理整个第一个维度和第二个参数中指定的范围。像这样 -

    s = [11, 12, 13, 14]
    s2 = [21, 22, 23, 24]
    s3 = [s, s2] # List of lists
    s4 = array(s3) # 2-dimensional array
    
    print s4[:,1:3]
    -> [[12, 13],
        [22, 23]]
    

    如您所见,这完全在第一个维度上运行并打印第二个维度的第二个和第三个元素

    编辑: 正如 cmets 中的@tobias_k 所提到的 - array() 函数由 numpy 包提供,因此您需要为其添加适当的导入。 此语法由包为二维数组提供,而不是为普通列表提供。

    【讨论】:

    • 您应该添加 array 是来自 numpy 包的函数。它不适用于“普通”列表。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-11-10
    • 2013-03-21
    • 2011-04-15
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多