所以我有一个很大的点列表。我把这些点分成x坐标和y坐标,然后再把它们分成1000组。
x = [points_Cartesian[x: x + 1000, 0] for x in range(0, len(points_Cartesian), 1000)]
(y坐标看起来相同,但用y代替x。(
我试图把笛卡尔点变成极坐标,为此,我必须将x中的每个项和y中的每个项目平方。
for sublist1 in x:
temp1 = []
for inte1 in sublist1:
temp1.append(inte1**2)
xSqua.append(temp1)
之后,我把两个平方值加在一起,并对它们进行平方根运算,得到rad.
rad = np.sqrt(xSqua + ySqua)
问题是,我从10000点开始,在这个代码的某个地方,它被削减到了1000点。有人知道这个错误是什么吗?我是怎么解决的?
您已经在使用numpy
。您可以使用numpy.reshape()
重塑矩阵,并在整个数组上使用**
运算符对整个数组进行元素平方,这样您的代码将比迭代快得多。
例如,假设我们有一个10000x3points_cartesian
points_Cartesian = np.random.random((10000,2))
# reshape to 1000 columns, as many rows as required
xpts = points_Cartesian[:, 0].reshape((-1, 1000))
ypts = points_Cartesian[:, 1].reshape((-1, 1000))
# elementwise square using **
rad = np.sqrt(xpts**2 + ypts**2)
ang = np.arctan2(ypts, xpts)
现在rad
和ang
是10x1000
阵列。