码:
import numpy as np
def f(a):
return np.array([0, 1])
N_x, N_y = 4, 3
U = V = np.zeros((N_x, N_y))
for n_y in range(N_y):
for n_x in range(N_x):
U[n_x, n_y], V[n_x, n_y] = f(0)
print(U, V)
这样会产生意外的输出:
[[1. 1. 1.]
[1. 1. 1.]
[1. 1. 1.]
[1. 1. 1.]] [[1. 1. 1.]
[1. 1. 1.]
[1. 1. 1.]
[1. 1. 1.]]
但是如果我用
U = np.zeros((N_x, N_y))
V = np.zeros((N_x, N_y))
代替U = V = np.zeros((N_x, N_y))
,我得到以下预期结果。
[[0. 0. 0.]
[0. 0. 0.]
[0. 0. 0.]
[0. 0. 0.]] [[1. 1. 1.]
[1. 1. 1.]
[1. 1. 1.]
[1. 1. 1.]]
问题:这里出了什么问题?
通过多次分配,您只能将一个对象分配给U和V变量,因此,有效的做法是:
for n_y in range(N_y):
for n_x in range(N_x):
U[n_x, n_y], U[n_x, n_y] = f(0)
print(U, U)
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句