Python 如何简化for循环
我有一个for循环来生成规则模式的图像。请分享如何用更少的线简化for循环Python 如何简化for循环,python,for-loop,Python,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)):
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.sini*np.pi/4+np.sinj*np.pi/4表示rangenp.sizey中的j]表示rangenp.sizex中的i]
这将创建一个2D Python列表。然后,您可能希望将其更改为numpy数组,以便于您了解为什么它需要简化?它只有三行,你可以减少行数,但它不会简化它。似乎你有一个任务,希望我们为你解决它:/正如@Bernhard所说,这里没有什么可以简化的。行数减少并不总是意味着效率更高,如果您关心效率,那么代码的问题就比行数过多稍微大一些。我给你一个提示:席=I*N.PI/4驾驶室计算次数较少。实际上,np.pi/4也只能计算一次,但您需要额外的一行。。。看到了吗?我以前喜欢跟着他。它以前起过作用。我不确定这是正确的形式。B=200×200矩阵'A_mat=200,200 dx,dy=0.1,0.1 x=np.linspace-100,99,200 y=np.linspace-100,99,200 A=np.zerosA_mat,dtype=np.float64 A=xdx+ydy*B'