避免 Numpy Index For 循环
Avoid Numpy Index For loop
有什么方法可以避免为这样的操作使用第二个 for
循环?
for x in range(Size_1):
for y in range(Size_2):
k[x,y] = np.sqrt(x+y) - y
或者有更好的优化方法吗?现在大尺寸的速度非常慢。
这是一个向量化的解决方案 broadcasting
-
X,Y = np.ogrid[:Size_1,:Size_2]
k_out = np.sqrt(X+Y) - Y
补充 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
有什么方法可以避免为这样的操作使用第二个 for
循环?
for x in range(Size_1):
for y in range(Size_2):
k[x,y] = np.sqrt(x+y) - y
或者有更好的优化方法吗?现在大尺寸的速度非常慢。
这是一个向量化的解决方案 broadcasting
-
X,Y = np.ogrid[:Size_1,:Size_2]
k_out = np.sqrt(X+Y) - Y
补充 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