问题描述
我在Python中遇到了以下代码:
processed = data[:,feature_locs]
我试图用这种方式测试这种代码
ha = (3, 5, 7)
print ha
data = [1, 2, 3, 4, 5]
print data[:, ha]
但我收到TypeError
。
我在做什么错,以上语法是什么意思?
1楼
当您使用二维数组(或列表列表)时,使用此语法可处理整个第一维和第二个参数中指定的范围。 因此 -
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()函数,因此您需要为其添加适当的导入。 该语法是由软件包提供的,用于二维数组,而不是用于普通列表。
2楼
这是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的文件