3

有什么办法可以避免使用第二个for循环进行这样的操作?

for x in range(Size_1):
    for y in range(Size_2):
        k[x,y] = np.sqrt(x+y) - y

或者有没有更好的方法来优化这个?现在它对于大尺寸来说非常慢。

4

2 回答 2

2

这是一个矢量化解决方案broadcasting-

X,Y = np.ogrid[:Size_1,:Size_2]
k_out = np.sqrt(X+Y) - Y
于 2017-02-09T20:12:48.973 回答
0

补充 Divakar 的解决方案:如果Y并且X不是新范围,而是一些预先存在的数字向量,请使用np.ix_

Y, X = np.array([[1.3, 3.5, 2], [2.0, -1, 1]])
Y, X = np.ix_(Y, X) # does the same as Y = Y[:, None]; X = X[None, :]
out = np.sqrt(Y+X) - X
于 2017-02-09T20:19:10.687 回答