Python 如何在matplotlib中从项目为类的二维numpy数组中创建网格
我正在处理一个n维的2D NumPy数组,其中的项是一个状态为1或0的类正方形。我不想创建一个包含类的int值的新数组,那么有没有办法将数组映射到彩色网格Python 如何在matplotlib中从项目为类的二维numpy数组中创建网格,python,arrays,numpy,matplotlib,grid,Python,Arrays,Numpy,Matplotlib,Grid,我正在处理一个n维的2D NumPy数组,其中的项是一个状态为1或0的类正方形。我不想创建一个包含类的int值的新数组,那么有没有办法将数组映射到彩色网格 import numpy as np from random import randrange class Square(): def __init__(self, state, pos): self.state = state self.pos = pos self.adj_sqs
import numpy as np
from random import randrange
class Square():
def __init__(self, state, pos):
self.state = state
self.pos = pos
self.adj_sqs = []
self.optimal_sq = []
def __repr__(self):
return str(self.state)
dim = 10
grid = np.array([[Square(randrange(2), [x,y]) for y in range (dim)] for x in range(dim)])
您可以通过
np.array([[Square(…).state for y in…]for x in…]直接创建数字数组)
。或者变换正方形s
数组的每个元素以获得其状态
:
从matplotlib导入pyplot作为plt
从matplotlib.colors导入ListedColormap
将numpy作为np导入
从随机输入范围
类Square():
定义初始化(自身、状态、位置):
self.state=状态
self.pos=pos
self.adj_sqs=[]
自优化_sq=[]
定义报告(自我):
返回str(self.state)
尺寸=10
grid=np.数组([[Square(randrange(2),[x,y])表示范围内的y(dim)]表示范围内的x(dim)])
grid\u np=np.数组([[grid[x,y].范围内y的状态(dim)]范围内x的状态(dim)])
plt.pcolor(np.arange(-0.5,dim),np.arange(-0.5,dim),grid_np,cmap=列表颜色图(['crimson','turquoise']))
plt.gca().set_aspect('equal')#将正方形显示为正方形
plt.xticks(范围(尺寸))
plt.yticks(范围(尺寸))
plt.show()
在
数组中包装正方形列表不会给您带来任何好处。列表没有state
属性,数组也没有。我将其包装到数组中,因为我在代码后面使用了Numpy方法和函数。