簡體   English   中英

在Jupyter-Notebook中使用循環的圖像網格。 怎么樣?

[英]Grid of images using a loop in Jupyter-Notebook. How?

我想在Jupyter筆記本中以2x3矩陣格式顯示var_1.png,...,var_40.png圖像。 在此處輸入圖片說明 但是,我只能手動進行:

import matplotlib.pyplot as plt
import matplotlib.image as mpimg

%matplotlib inline

img1=mpimg.imread('Variable_8.png')
img2=mpimg.imread('Variable_17.png')
img3=mpimg.imread('Variable_18.png')
          ...

fig, ((ax1, ax2, ax3), (ax4,ax5,ax6)) = plt.subplots(2, 3, sharex=True, sharey=True) 

ax1.imshow(img1)
ax1.axis('off')
ax2.imshow(img2)
ax2.axis('off')
   ....

我想要更清潔的東西。 類似於列表理解的東西,它指定了

image=[img(i)=mpimg.imread('Variable_(i).png') for i in [8,17,28, ..]

[ax[j].imshow(img(j)),ax[j].axis('off') for j in range(len(image))]

一些幫助?

關於什么:

imgs_names = ...
imgs = [mpimg.imread(name) for name in imgs_names]

n_rows = 2
n_cols = 3
fig, axes = subplots(n_rows, n_cols)

[(axes[i][j].imshow(imgs[i*n_cols + j]), axes[i][j].axis('off')) for i in range(n_rows) for j in range(n_cols)]

Rmk:如果n_cols=1n_rows=1 ,這將n_rows=1 ,因為axes是一個列表,而不是數組。

如果列表理解要做的事情不止一件事,它們很快就會變得難以理解。 如果列表的內容根本沒有實際使用,則使用列表推導似乎也被認為是不好的風格。

因此,我提出以下建議

import matplotlib.pyplot as plt

images = [plt.imread(f"Variable_{i}.png") for i in [8,17,28,29,31,35]]

fig, axes = plt.subplots(2, 3, sharex=True, sharey=True) 

for img, ax in zip(images, axes.flat):
    ax.imshow(img)
    ax.axis('off')

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM