【发布时间】:2015-09-12 16:04:26
【问题描述】:
在下面的示例中,就好像 Python 不区分 angle[u][v] 和 radius[u][v]。
也就是说,从 for 循环中的第一个命令开始计算 angle 数组的一个元素。然后,从 for 循环中的第二个命令开始计算 radius 数组的相应元素。我的问题是radius[v][u] 的这个值会被覆盖到angle[v][u]。
from mpl_toolkits.mplot3d import Axes3D
from matplotlib import cm
from matplotlib.colors import LogNorm
import matplotlib.pyplot as plt
import numpy as np
from pylab import *
import matplotlib as mpl
import math
X = np.arange(0, 656, 1)
Y = np.arange(0, 667, 1)
X, Y = np.meshgrid(X, Y)
X = X - 243 + 0.0
Y = Y - 363 + 0.0
angle = X
radius = X
height = X.shape[0]
width = X.shape[1]
print width
print height
for v in xrange(height):
for u in xrange(width):
angle[v][u] = math.atan2(X[v][u],Y[v][u])
radius[v][u] = math.sqrt(X[v][u]**2 + Y[v][u]**2)
print angle
print radius
我在这里错过了什么?
【问题讨论】:
-
@jonrsharpe 我想说是相关的,但是这里的 OP 还没有意识到他想要复制对象:)
-
@mescalinum 副本解释了问题和解决方案。您是否认为这从未被报道过?
-
那么应该存在一个更好的副本
-
@mescalinum “更好” 怎么样?请注意,如果您认为可以改进它,则可以对其进行编辑,这比再次回答相同的问题更有用。
标签: python for-loop scope variable-assignment