簡體   English   中英

如何簡化for循環

[英]How to simplify the for loop

我有一個 for 循環來生成常規圖案圖像。 請分享如何用更少的行來簡化 for 循環。

import numpy as np
import matplotlib.pyplot as plt

m, n = 100, 100

grid_img = np.zeros([m,n])
x = np.linspace(0, 1, m)
y = np.linspace(0, 1, n)

for i in range(np.size(x)):
    for j in range(np.size(y)):
        xi = i*np.pi/4
        yi = j*np.pi/4

        grid_img[i][j] = np.sin(xi)+np.sin(yi)

grid_img[grid_img<1.5] = 0

您可以用一行列表理解完全替換兩個for循環,但這會損害可讀性。

li = [ [ np.sin(i*np.pi/4) + np.sin(j*np.pi/4) for j in range(np.size(y)) ] for i in range(np.size(x)) ]

這將創建一個二維 Python 列表。 然后,您可能希望將其更改為 numpy 數組以用於<1.5條件:

grid_img = np.array(li)
grid_img[grid_img<1.5] = 0

暫無
暫無

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

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