垂直切片:列表索引必须是整数或切片,而不是元组错误

时间:2019-08-01 23:31:53

标签: python

我有一个二维矩阵,我想在其中切出垂直列,以便可以对其进行绘图。为此,我想使用切片符号和for循环,以便产生所需的列。在下面的代码中,我尝试打印出每一列,以查看切片符号是否有效。

Y_AXIS = [[1,2,3,4,5],
          [2,3,4,5,6],
          [3,4,5,6,7],
          [4,5,6,7,8]]

for i in range(5):
    print("Slice: ", Y_AXIS[:,i])

我希望代码先显示[1,2,3,4],然后显示[2,3,4,5],依此类推。但是,无论何时运行,编译器都会抛出一个错误,提示“列表索引必须是整数或切片,而不是元组”。

2 个答案:

答案 0 :(得分:0)

使用numpy:

$pip$i = New-AzPublicIpAddress -Name "publicIP$i" -ResourceGroupName $resourceGroup.ResourceGroupName -Location $location -AllocationMethod Dynamic

或者您也可以按照@Paul Rooney的建议使用zip:

import numpy as np

y_axis = np.array([[1,2,3,4,5], 
                   [2,3,4,5,6], 
                   [3,4,5,6,7], 
                   [4,5,6,7,8]])

for i in range(5):
    print(y_axis[:, i].tolist()) 

# output:
# Slice:  [1, 2, 3, 4]
# Slice:  [2, 3, 4, 5]
# Slice:  [3, 4, 5, 6]
# Slice:  [4, 5, 6, 7]
# Slice:  [5, 6, 7, 8]

答案 1 :(得分:0)

如果列表不是非numpy数组,则无法像这样对列表进行切片,相反,如果列表是普通的python列表,则应这样做

First_Time_Run

另一种聪明的方法是Y_AXIS = [[1,2,3,4,5], [2,3,4,5,6], [3,4,5,6,7], [4,5,6,7,8]] print("Slice: ", [[row[i] for row in Y_AXIS] for i in range(len(Y_AXIS[0]))]) # outputs Slice: [[1, 2, 3, 4], [2, 3, 4, 5], [3, 4, 5, 6], [4, 5, 6, 7], [5, 6, 7, 8]] 您的numpy数组。

transpose