小编Ser*_*nov的帖子

NumPy - 涉及范围迭代器的矢量化循环

有没有办法让这个工作没有for循环?

import import numpy as np
import matplotlib.pyplot as plt    

L = 1
N = 255
dh = 2*L/N
dh2 = dh*dh

phi_0 = 1
c = int(N/2)
r_0 = L/2

arr = np.empty((N, N))

for i in range(N):

    for j in range(N):

            arr[i, j] = phi_0 if (i - c)**2 + (j - c)**2 < r_0**2/dh2 else 0


plt.imshow(arr)
Run Code Online (Sandbox Code Playgroud)

我试过调用函数(x [None,:],y [:,None]),其中:

function(i, j):

    return phi_0 if (i - c)**2 + (j - c)**2 < r_0**2/dh2 else 0
Run Code Online (Sandbox Code Playgroud)

但它需要list …

python numpy vectorization

5
推荐指数
1
解决办法
183
查看次数

标签 统计

numpy ×1

python ×1

vectorization ×1