Python 如何用数据帧中的对象(PIL图像)替换int值?

Python 如何用数据帧中的对象(PIL图像)替换int值?,python,pandas,matplotlib,python-imaging-library,Python,Pandas,Matplotlib,Python Imaging Library,我想以网格样式绘制4个不同的图像,随机分布在144个瓷砖(9x16)上。为此,我创建了一个包含144个值的随机矩阵(每个值可以取0-3)。然后我将这些值传输到一个数据帧,并用4个不同的图像替换这些值。之后,我通过子图和imshow绘制图像 matrix = np.random.randint(low=0, high=3, size=(16, 9)) df = pd.DataFrame(matrix).astype('object') filenames = [['test1.jpg', 'te

我想以网格样式绘制4个不同的图像,随机分布在144个瓷砖(9x16)上。为此,我创建了一个包含144个值的随机矩阵(每个值可以取0-3)。然后我将这些值传输到一个数据帧,并用4个不同的图像替换这些值。之后,我通过子图和imshow绘制图像

matrix = np.random.randint(low=0, high=3, size=(16, 9))
df = pd.DataFrame(matrix).astype('object')

filenames = [['test1.jpg', 'test2.jpg'],
             ['test3.jpg', 'test4.jpg']]
images = [[Image.open(fn) for fn in row] for row in filenames]
dfIm = pd.DataFrame(images)

df = df.replace([0],dfIm.iloc[0,0])
df = df.replace([1],dfIm.iloc[0,1])
df = df.replace([2],dfIm.iloc[1,1])
df = df.replace([3],dfIm.iloc[1,0])

但是用PIL图像替换数据帧中的数字会引起断言错误。有人知道如何解决我的问题吗?谢谢大家!

为什么不将文件名作为字符串传递到新的数据帧中,然后在绘图时添加一行以将每个文件作为PIL对象打开?我没有想到这一点。很好用,谢谢。