web-dev-qa-db-ja.com

TypeError:配列のリストの特定の要素を変更する場合、リストのインデックスはタプルではなく整数でなければなりません

X座標とy座標の2行n列の配列のリストがあります。

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

各配列の2行目のy座標を特定の値「シフト」だけシフトしようとしています。ただし、以下の方法でこれを実行しようとすると、エラーが発生します。

"TypeError:配列のリストの特定の要素を変更する場合、リストのインデックスはタプルではなく整数でなければなりません。"

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はリストではないため、2D配列である必要があるため、何が間違っているのかわかりません。誰かが私が間違っていること、それを修正する方法を教えてもらえれば幸いです。

ありがとう。

編集:このテストの予想される結果は、

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

,の代わりに:が配置されているようです。

コンマをコロンに置き換えます。

以下は、リストからのサブリスト作成の正しい構文です。

list_name[start_index:end_index]
0
Neelu