gpt4 book ai didi

python - 使用 Numpy(坐标变换)计算长表达式?

转载 作者:太空宇宙 更新时间:2023-11-04 07:41:05 25 4
gpt4 key购买 nike

在 Python 的 Numpy 模块中,是否有一个函数可以计算数组上的长/高级数学表达式?我听说过 numexp 模块,但不想进一步依赖它。

更好的是,我能否将这些表达式限制为仅表示数组中子数组的第一个或第二个元素,而不必将它们解包为单独的数组?

这是我的具体问题。我有一个包含地理点坐标的数组数组,如下所示:[[x1,y1]、[x2,y2]、[x3,y3] 等...]。我想要的是将这些地理坐标转换为像素坐标,以便可以在图像上绘制它们。因此,我想对每个子数组的第一个元素(即 xs)运行以下表达式/计算:

((180+X)/360)*screenwidthpixels

然后在第二个元素上,即 ys:

((-90+Y)/180)*-screenheightpixels

这些表达式可以在 python for 循环中工作,但速度太慢,这就是我转向 Numpy 的原因。我知道我可以并且已经尝试过将 numpys 单个数学运算符函数相互链接起来但仍然太慢,此外,为此我首先必须解压缩所有 xs 和 ys 以分离数组并在计算后将它们重新打包在一起它甚至更慢。

所以我想我正在寻找一种更直接的 Numpy 方法,使用更少的步骤来使用上面的表达式转换我的坐标数组。有什么想法吗?

最佳答案

import numpy as np
points = np.random.rand(10,2)
translation = np.array([180,-90])
scaling = np.array([1024, -768]) / np.array([360,180])
transformed_points = (points + translation) * scaling

这将满足您的需求。它依靠 numpy 广播规则来实现表现力和性能。

但与其解释它是如何工作的,我认为你最好自己找一本好的 numpy 入门书,然后从头开始。 numpy 是 python 最好的东西之一,多学一点就不会错。可以这么说,numpy 肯定能胜任您所面临的任务。

关于python - 使用 Numpy(坐标变换)计算长表达式?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20921640/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com