gpt4 book ai didi

python - TypeError:列表索引必须是整数,而不是尝试更改数组列表的某些元素时的元组

转载 作者:行者123 更新时间:2023-11-28 20:41:12 24 4
gpt4 key购买 nike

我有一个包含 2 x n 个 x 和 y 坐标数组的列表。

old: [array([[1, 2, 3], [4, 5, 6]]), array([[10, 20, 30], [40, 50, 60]])]

我正在尝试将 y 坐标(每个数组的第二行)移动某个值“shift”。但是,当我尝试通过以下方法执行此操作时,出现错误:

"TypeError: list indices must be integers, not tuple when trying to alter certain elements of a list of arrays."

import pylab


def shiftY(old,shift):
new = list([])

for i in arange(len(old)):
y = old[i][1,:] + shift
newItem = array([old[:,0],y])
new.append(newItem)

return new

old = list()
old.append(arr

ay([[1, 2, 3], [4, 5, 6]]))
old.append(array([[10,20,30],[40,50,60]]))
shift =3
new=shiftY(old,shift)
print(new)

回溯:

Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "C:\Python27_32bit\lib\site-packages\spyderlib\widgets\externalshell\sitecustomize.py", line 540, in runfile
execfile(filename, namespace)
File "C:/Users/tald574/testShifty.py", line 25, in <module>
new=shiftY(old,shift)
File "C:/Users/tald574/testShifty.py", line 15, in shiftY
newItem = array([old[:,0],y])
TypeError: list indices must be integers, not tuple

我看不出我做错了什么,因为 newItem 甚至不应该是一个列表,它应该是一个二维数组。如果有人能告诉我我做错了什么以及如何解决它,我将不胜感激。

谢谢。

编辑:这个测试的预期结果是,

new:[array([[1, 2, 3], [7, 8, 9]]), array([[10, 20, 30], [43, 53, 63]])]

最佳答案

您不需要列表切片符号中的逗号。 array[:,i] 被解析为 array[:t],其中 t = ,i 是一个元组。参见 here列表切片的概要。

元组是 defined by commas , 不是括号。

在你的情况下,替换行

y = old[i][1,:] + shift
newItem = array([old[:,0],y])

y = old[i][1:] + shift
newItem = array([old[:0],y])

关于python - TypeError:列表索引必须是整数,而不是尝试更改数组列表的某些元素时的元组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33925698/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com