对二维列表中的每个项目进行平方运算

2024-10-02 18:25:24 发布

您现在位置:Python中文网/ 问答频道 /正文

所以我有一大堆要点。 我把这些点分成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点。 有人知道错误是什么以及我如何修复它吗


Tags: inforlennprangepoints要点append
1条回答
网友
1楼 · 发布于 2024-10-02 18:25:24

您已经在使用numpy。您可以使用^{}重塑矩阵,并在整个数组上使用**操作符按元素对整个数组进行平方运算,您的代码将比迭代快得多

例如,假设我们有一个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)

现在radang10x1000数组

相关问题 更多 >