当前位置: 代码迷 >> python >> Python有趣的数组索引
  详细解决方案

Python有趣的数组索引

热度:74   发布时间:2023-06-16 14:17:20.0

我在Python中遇到了以下代码:

processed = data[:,feature_locs]

我试图用这种方式测试这种代码

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

但我收到TypeError

我在做什么错,以上语法是什么意思?

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

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]]

如您所见,这将完全遍历第一个维度,并打印第二个维度的第二个和第三个元素

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

这是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的文件