2

我想创建一个图,其中有 32x32 图像以一种马赛克形状彼此相邻平铺。这些图像是 (16, 16, 4) RGBA 阵列。我目前的代码是这样的 -

import numpy as np
from matplotlib import animation
import matplotlib.pyplot as plt

data = np.load("https://github.com/sharmaabhishekk/emoji-mosaic-mpl/blob/master/emoji_matches.npy")
tiled_left = np.tile(np.arange(0, 512, 16), 32)

def update(i):
    print(i)
    row = i//32
    ax.imshow(data[i], extent=[tiled_left[i], tiled_left[i] + 16, row*16, row*16 + 16])

fig, ax = plt.subplots()
ax.set(xlim=[0, 512], ylim=[0, 512], aspect=1)
ax.invert_yaxis()
ax.set_axis_off()

anim = animation.FuncAnimation(fig=fig, frames=1024, func=update, repeat=False, interval=50, cache_frame_data=False)

plt.show()

逻辑对我来说看起来足够好,但它非常慢。我不确定要使用什么优化。我想过使用 zeros 数组,然后将数据屏蔽为 call update。但这甚至更慢。

我的想法不多了。我可以尝试什么来加快这个过程?

4

0 回答 0