Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/300.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/visual-studio/8.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如何简化for循环_Python_For Loop - Fatal编程技术网

Python 如何简化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)):

我有一个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.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'