Создание двумерного массива чисел
Ознакомьтесь с документацией для функции numpy reshape . Здесь вы можете превратить ваш массив в 2D-массив, выполнив:
data = is_prime.reshape(10,10)
мы также можем создать массив из первых 100 целых чисел, которые будут использоваться для маркировки аналогичным образом:
integers = np.arange(100).reshape(10,10)
Построение 2D-массива
При построении 2D-графики вам необходимо использовать одну из 2D-функций, которые предоставляет matplotlib: например, imshow, matshow, pcolormesh. Вы можете вызвать эти функции непосредственно в вашем массиве, и в этом случае они будут использовать colormap , и цвет каждого пикселя будет соответствовать значению в соответствующем месте в массиве. Или вы можете явно сделать RGB-изображение, которое дает вам немного больше контроля над цветом каждого блока. В этом случае я думаю, что это немного проще сделать, поэтому в приведенном ниже решении используется этот подход. Однако, если вы хотите аннотировать тепловые карты, документация по matplolib имеет отличный ресурс для этого здесь . Сейчас мы создадим массив значений RGB (в форме 10 на 10 на 3) и изменим цвета только простых чисел, используя возможности индексации numpy.
#create RGB array that we will fill in
rgb = np.ones((10,10,3)) #start with an array of white
rgb[data]=[1,1,0] # color the places where the data is prime to be white
plt.figure(figsize=(10,10))
plt.imshow(rgb)
# add number annotations
integers = np.arange(100).reshape(10,10)
#add annotations based on: https://stackoverflow.com/questions/20998083/show-the-values-in-the-grid-using-matplotlib
for (i, j), z in np.ndenumerate(integers):
plt.text(j, i, '{:d}'.format(z), ha='center', va='center',color='k',fontsize=15)
# remove axis and tick labels
plt.axis('off')
plt.show()
В результате на этом изображении: