Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/list/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
带逗号/列表的Python切片表示法_Python_List_Numpy_Slice - Fatal编程技术网

带逗号/列表的Python切片表示法

带逗号/列表的Python切片表示法,python,list,numpy,slice,Python,List,Numpy,Slice,我遇到了一些带有切片表示法的python代码,我很难理解它们。 它看起来像切片表示法,但使用逗号和列表: list[:, [1, 2, 3]] 这个语法有效吗?如果是这样,它做什么 “编辑”看起来像一个二维numpy数组,它生成一个复杂值并将其传递给: 它实际执行的操作取决于被索引的类型。假设对象实际上是一个numpy数组,这称为,并选择指定的列: >>> import numpy as np >>> a = np.arange(12).reshape(3,

我遇到了一些带有切片表示法的python代码,我很难理解它们。 它看起来像切片表示法,但使用逗号和列表:

list[:, [1, 2, 3]]
这个语法有效吗?如果是这样,它做什么


“编辑”看起来像一个二维numpy数组,它生成一个复杂值并将其传递给:


它实际执行的操作取决于被索引的类型。

假设对象实际上是一个
numpy
数组,这称为,并选择指定的列:

>>> import numpy as np
>>> a = np.arange(12).reshape(3,4)
>>> a
array([[ 0,  1,  2,  3],
       [ 4,  5,  6,  7],
       [ 8,  9, 10, 11]])
>>> a[:, [1,2,3]]
array([[ 1,  2,  3],
       [ 5,  6,  7],
       [ 9, 10, 11]])
>>> a[:, [1,3]]
array([[ 1,  3],
       [ 5,  7],
       [ 9, 11]])
请注意,这不适用于标准Python列表:

>>> a.tolist()
[[0, 1, 2, 3], [4, 5, 6, 7], [8, 9, 10, 11]]
>>> a.tolist()[:,[1,2,3]]
Traceback (most recent call last):
  File "<ipython-input-17-7d77de02047a>", line 1, in <module>
    a.tolist()[:,[1,2,3]]
TypeError: list indices must be integers, not tuple
>a.tolist()
[[0, 1, 2, 3], [4, 5, 6, 7], [8, 9, 10, 11]]
>>>a.tolist()[:,[1,2,3]]
回溯(最近一次呼叫最后一次):
文件“”,第1行,在
a、 tolist()[:,[1,2,3]]
TypeError:列表索引必须是整数,而不是元组

你确定列表是列表吗?它可能是一个类的实例,该类以一种不寻常的方式重写了
\uuu getitem\uuuu
。您尝试过键入(list)吗?可以是numpy数组或熊猫数据帧。@mattexx,我没有完整的代码,这在numpy和熊猫中有什么作用?numpy数组和熊猫数据帧使用二维数组,很像matlab和r。第一个参数通常表示行的一部分,而第二个参数表示列的一部分。所以列表[:,:3]将是所有行,前三列。我不确定两个数组是否支持您在问题中使用的精确符号。@mattexx:为了避免混淆OP,强调numpy数组与其他数据结构在本质上不同,它们不是二维对象可能是有用的。他们是n-D。
>>> a.tolist()
[[0, 1, 2, 3], [4, 5, 6, 7], [8, 9, 10, 11]]
>>> a.tolist()[:,[1,2,3]]
Traceback (most recent call last):
  File "<ipython-input-17-7d77de02047a>", line 1, in <module>
    a.tolist()[:,[1,2,3]]
TypeError: list indices must be integers, not tuple