Pythonで、多次元のリストからある2つの次元を指定(他の次元を固定)して、2次元ヒストグラム(離散的なヒートマップ)を作りたいです。
例えば次のような3次元のリストがあるとします。
test = [ [ [10, 11, 12, 13, 14], [11, 12, 13, 14, 15], [12, 13, 14, 15, 16], [13, 14, 15, 16, 17] ], [ [17, 16, 15, 14, 13], [16, 15, 14, 13, 12], [15, 14, 13, 12, 11], [14, 13, 12, 11, 10] ], [ [10, 11, 12, 13, 14], [10, 11, 12, 13, 14], [10, 11, 12, 13, 14], [10, 11, 12, 13, 14] ] ]
test[0][:][:]
, test[1][:][:]
, test[2][:][:]
をヒストグラムとして可視化すると順に次のようになります。
これらを出力したPythonのコードは以下の通りです。
test.py
1import seaborn as sns 2import matplotlib.pyplot as plt 3 4test = [ 5 [ 6 [10, 11, 12, 13, 14], 7 [11, 12, 13, 14, 15], 8 [12, 13, 14, 15, 16], 9 [13, 14, 15, 16, 17] 10 ], 11 [ 12 [17, 16, 15, 14, 13], 13 [16, 15, 14, 13, 12], 14 [15, 14, 13, 12, 11], 15 [14, 13, 12, 11, 10] 16 ], 17 [ 18 [10, 11, 12, 13, 14], 19 [10, 11, 12, 13, 14], 20 [10, 11, 12, 13, 14], 21 [10, 11, 12, 13, 14] 22 ] 23] 24 25plt.figure() 26sns.heatmap(test[0][:][:], cmap='Blues', square=True, annot=True) 27plt.savefig('./test_0.png') 28plt.show() 29plt.close('all')
質問
ここで3つの行列のうち、例えばそれぞれの一番上の行を取り出したもののヒストグラムを作りたいです。つまりイメージとしては
[ [10, 11, 12, 13, 14], [17, 16, 15, 14, 13], [10, 11, 12, 13, 14] ]
をそのまま可視化したようなヒストグラムを作りたいです。これをやろうとソースコードのtest[0][:][:]
をtest[:][0][:]
に変えてみたのですが、ヒストグラムはtest[0][:][:]
と同じものでした。同様にtest[:][1][:]
はtest[1][:][:]
と同じヒストグラム、test[:][2][:]
はtest[2][:][:]
と同じヒストグラムとなってしまいます。
どうしたらtest[:][0][:]
とかtest[:][:][0]
のヒストグラムを作れるでしょうか? よろしくお願いします。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2020/12/21 08:04