python - 将一个点映射到一个 numpy 数组中
问题描述
这可能是一个简单的问题。
我想获取具有 x,y 笛卡尔坐标的点的 numpy 索引。我应该使用int()
, floor()
,ceil()
还是不使用它们?
numpy 数组表示一个网格图,笛卡尔坐标系的 (0,0) 位置应该在 numpy 数组的中心。
我发现了一张显示我的问题的图片:
解决方案
假设您在 5x5 笛卡尔平面上工作。您可能决定用 numpy 表示您的飞机,如下所示:
>>> x = np.arange(-12,13)
>>> x.shape = (5,5)
>>> x
array([[-12, -11, -10, -9, -8],
[ -7, -6, -5, -4, -3],
[ -2, -1, 0, 1, 2],
[ 3, 4, 5, 6, 7],
[ 8, 9, 10, 11, 12]])
但是您的问题是您的原点不在(0,0):
>>> x[0,0]
-12
因为所有数组都从 0 开始。要“修复”索引引用,只需在引用二维数组时将数组索引偏移 1D 范围的一半:
>>> x[math.floor(0 - 5/2),math.floor(0 - 5/2)]
0
同样地:
>>> x[math.floor(-2 - 5/2),math.floor(-2 - 5/2)]
-12
你可以像这样引用你的数组:
>>> for i in range(-2,3):
... for j in range(-2,3):
... ix = math.floor(i - 5/2)
... jy = math.floor(j - 5/2)
... x[ix,jy] = x[ix,jy] * 5
... print("{0:>5}".format(x[ix,jy]),end="")
... print()
...
-60 -55 -50 -45 -40
-35 -30 -25 -20 -15
-10 -5 0 5 10
15 20 25 30 35
40 45 50 55 60
这显然是一个人为的例子。
推荐阅读
- twitter - 将 Twitter 与 dialogflow 机器人集成时出现“机器人未启动”错误
- javascript - 可以从外部调用 rollup.js 捆绑的函数吗?
- javascript - Fetch() 认证失败
- ios - UICollectionView 动态表头大小计算
- angular - 需要在primeng中添加“搜索”过滤器,并且在第1列中添加Sr. No.
- scala - 使用“=> Unit”参数的替代方法重载方法值触发器
- javascript - 如何将js脚本文件作为子进程node.js执行
- laravel - Laravel 缓存模型与 Eager Loading
- windows - 重新打开默认应用程序时“通过安全透明方法尝试”
- java - HttpURLConnection 到带有代理的 HTTPS