首页 > 解决方案 > 从(x,y)坐标numpy数组中提取第一个元素

问题描述

我们正在尝试创建一组彼此靠近的坐标。要创建这个组,我们需要将 numpy 数组的 x、y 坐标与数组中的第一个元素进行比较。

如果它们匹配,我们将其存储在现有数组中的一个中,如果不匹配,我们创建一个新数组并将它们存储在那里。

我们已经用 for 循环尝试过,并分别提取 x 和 y。但是,它没有用。


mport numpy as np 

coordinates = [(580.4625,201.87183),(580.4625,201.87183),(167.84459,701.64935),
              (167.84459,701.64935),(167.84459,694.65247),(167.84459,694.65247),
              (979.09344,725.6387),(979.09344,725.6387),(979.09344,725.6387),
              (979.09344,725.6387),(200.81406,1271.3956),(200.81406,1271.3956),
              (200.81406,1271.3956),(1005.0694,1266.398),(1005.0694,1266.398),
              (1005.0694,1266.398),(180.83257,1568.2635),(180.83257,1568.2635),
              (994.0796,1591.2533),(539.5005,1862.1327)] 

seen = set() 

newlist = [] 

for item in coordinates: 
    t = tuple(item) 
    if t not in seen: 
        newlist.append(item) 
        seen.add(t) 

npArray = np.array(newlist) 
newlist = npArray.astype(int) 
npArray2 = np.array(newlist) 
coordinates1 = npArray2.astype(int) 

for i in coordinates1[0]: 
    print(i[0])

我们试图在单独的变量中获取上述消息中坐标的第一个元素。

目前我们收到一个错误:IndexError: invalid index to scalar variable。

我们是 python 新手,所以任何指导都会有所帮助,即使指向更好的方法。

谢谢!


谢谢你的所有答案。我认为我的错误在于没有解释问题。我会在这里再试一次:

coordinates = [(580.4625,201.87183),(580.4625,201.87183),(167.84459,701.64935),
              (167.84459,701.64935),(167.84459,694.65247),(167.84459,694.65247),
              (979.09344,725.6387),(979.09344,725.6387),(979.09344,725.6387),
              (979.09344,725.6387),(200.81406,1271.3956),(200.81406,1271.3956),
              (200.81406,1271.3956),(1005.0694,1266.398),(1005.0694,1266.398),
              (1005.0694,1266.398),(180.83257,1568.2635),(180.83257,1568.2635),
              (994.0796,1591.2533),(539.5005,1862.1327)] 

我们正在尝试创建位于上述列表中第一个坐标的 30 点 + 或 - 的坐标组。

因此,为此我们需要将所有坐标 (x, y) 与第一个坐标一一进行比较,如果它们在上述范围内,我们会将它们分配给一个组(例如 G1)/数组以第一个坐标为该组中的第一个元素。

如果不在范围内,我们将创建另一个组(例如 G2)/数组,并在这个新组中插入不在范围内的坐标。

这样,我们将进一步比较上面列表中的每个元素,直到所有坐标都被比较并分配给其中一个组。

希望,我说得更清楚了。

非常感谢您的帮助!

此致,

标签: python-3.xlistnumpy

解决方案


试试看,有效果

    for i in coordinates1: 
        print(i[0])

由于numpy数组坐标1的形状是(9,2),所以不需要坐标[0]来访问x坐标。


推荐阅读