Pythonで2D配列を初期化する際に問題があります。私は6x6の配列が、私はPythonで2D配列を初期化する
arr = [[None]*6]*6
をした。しかし、私が何時にしたい:私はちょうど1つのアイテムを設定し、そのすべての行の「複製された」
>>> arr[1][2]=10
>>> arr
[[None, None, 10, None, None, None], [None, None, 10, None, None, None], [None, None, 10, None, None, None], [None, None, 10, None, None, None], [None, None, 10, None, None, None], [None, None, 10, None, None, None]]
注意してください。どうしましたか?私はそれが同じリストを参照することと関係があると思いますが、これをどのように修正しますか?
私は
for key, _ in algos.items():
algoData[key] = []
for i in range(0,6):
algoData[key].append([])
for j in range(0,6):
algoData[key][i].append(None)
作品を考え出したが、ちょうど私が10000x10000配列をしたい場合、それは非常に非効率的であるもの、空の6x6の配列を、初期化するために長いと思われますか?
UPDATE
は、私はまた、2Dアレイの辞書を初期化することはできますか?私は以下のような辞書を初期化したい
algos = { "FIFO": ..., "LRU": ..., "Random": ... }
:私のような辞書持っ
リストの内包表記を使用してalgoData = { "FIFO": 2D arr, "LRU": 2D arr, "Random": 2D arr }
matplotlib(3Dサーフェスプロット)で使用するデータを保存したい –
その場合、numpyをお勧めします。サンプルを見たい場合は、[this example](http://matplotlib.sourceforge.net/examples/animation/simple_3danim.html)で使用されています。あなた自身の仕事を保存します。それは素晴らしいパッケージです。 – Cameron
私が必要とする行は 'lineData = np.empty((dims、length))'だけでしょうか? –