【发布时间】:2015-11-01 18:22:56
【问题描述】:
我有一个嵌套的字典列表,创建如下:
N = 30
grid = []
for row in range(N):
rows = []
for column in range(N):
each_cell = {"check": 0, "type": -1}
rows.append(each_cell)
grid.append(rows)
类型是我要绘制的类型,值 -1 表示单元格中没有任何内容,而 0,1,2,3 是不同的类型(不是渐变),我想用不同的颜色表示。
我将随机数量的类型放入网格中,如下所示:
import numpy.random as rnd
import matplotlib.pyplot as plt
for i in range (rnd.randint(0, N*N)):
x = rnd.randint(0, N)
y = rnd.randint(0, N)
grid[x][y]['check'] = 1
if grid[x][y]['check'] == 1:
grid[x][y]['type'] = rnd.randint(0,4)
我正在尝试用这个来绘制它:
plt.imshow(grid['type'], interpolation = 'nearest', cmap = 'gist_ncar_r')
plt.show()
但显然grid['type'] 并没有只选择我想要的类型,有人知道如何解决这个问题吗?
【问题讨论】:
-
第二个代码块是否应该在第一个代码块之后运行?我得到
IndexError: list index out of range。 -
为避免
IndexError: list index out of range,设置x和y时应使用rnd.randint(0, N - 1)。 -
@mfcovington 是的,当我同时运行它们时,我没有收到错误
-
如何通过编写
grid['check'][x][y]和grid['type'][x][y]来重新排列多数组grid的索引(以便最终成为字典)? -
实际上,您并没有指定使用
numpy.random而不是内置的random。它适用于numpy版本,但不是内置版本。
标签: python python-2.7 matplotlib