teratail header banner
teratail header banner
質問するログイン新規登録

回答編集履歴

2

追記

2019/05/09 07:52

投稿

8524ba23
8524ba23

スコア38352

answer CHANGED
@@ -7,4 +7,31 @@
7
7
  for i,x in enumerate(cd):
8
8
  if type(x) == str:
9
9
  print('index=',i,'x=',x,'is str!') # たとえば「index= 1 x= 8 is str!」など
10
- ```
10
+ ```
11
+
12
+ コメントを受けて
13
+ --
14
+ 変数`cd`はカンマ区切りの文字列のようなので、まずは数値リストに変換してやる必要があります。
15
+ その後やりたい処理としては以下のような感じでしょうか。
16
+ ```Python
17
+ import matplotlib.pyplot as plt
18
+ import numpy as np
19
+
20
+ mydict={0:(255,0,0),1:(0,255,0),2:(0,0,255),3:(255,255,0),4:(255,0,255),5:(0,255,255),6:(100,100,100),7:(100,100,0),8:(100,0,100),9:(0,100,100)}
21
+
22
+ cd = '8,5,3,7,4,7,8,5,4,3,1,4' # とりあえず3x4=12ピクセル分
23
+ cd = list(map(int,cd.split(','))) # カンマ区切り文字列→数値のリストに変換
24
+ print(cd) # [8, 5, 3, 7, 4, 7, 8, 5, 4, 3, 1, 4]
25
+
26
+ # 色番号から対応するRGB値を取得
27
+ conv = []
28
+ for x in cd:
29
+ conv.append(mydict[x])
30
+
31
+ # 画像に変換
32
+ pixels = np.array(conv).reshape(3,4,3)
33
+
34
+ plt.imshow(pixels)
35
+ plt.show()
36
+ ```
37
+ ![イメージ説明](775c2a032a97689108beb0ee38f62f08.png)

1

回答修正

2019/05/09 07:52

投稿

8524ba23
8524ba23

スコア38352

answer CHANGED
@@ -1,10 +1,10 @@
1
1
  > 「KeyError: '8'」とエラーが表示されてしまい難航してしまいました。
2
2
 
3
3
  cdの中にstr型の`'8'`が含まれていませんか?
4
- 以下のようなコードで確認できます。
4
+ 以下のようなコードで、どの位置にstr型の要素があるか確認できます。
5
5
  ```Python
6
- cd=[8,'8']
6
+ cd=8,5,3,7,4,7,8,5,4,3,1,4,7........8,6,9 #60000個の0~9の数値が並んでます。
7
7
  for i,x in enumerate(cd):
8
8
  if type(x) == str:
9
- print('index=',i,'x=',x,'is str!') # index= 1 x= 8 is str!
9
+ print('index=',i,'x=',x,'is str!') # たとえば「index= 1 x= 8 is str!」など
10
10
  ```