这里是一堆点,我想只提取0为第一个元素或列值为0的行。这是列表的输出片段。
array([[ 29.42787794, 453. , 496. ],
[ **0.** , **424. , 491.** ],
[ 34.66987165, 453. , 472. ],
[ 26. , 414. , 467. ],
[ 48.27007354, 393. , 454. ],
[ 51.4781507 , 417. , 440. ]]),
array([[ 24. , 453. , 496. ],
[ 34.66987165, 424. , 491. ],
[ **0.** , **453. , 472.** ],
[ 39.3192065 , 414. , 467. ],
[ 28. , 453. , 444. ],
[ 48.16637832, 417. , 440. ],
[ 48.70318265, 469. , 426. ]]),
array([[ 48.60041152, 453. , 496. ],
[ 26. , 424. , 491. ],
[ 39.3192065 , 453. , 472. ],
[ **0. , **414. , 467.**** ],
[ 24.69817807, 393. , 454. ],
[ 45.27692569, 453. , 444. ],
[ 27.16615541, 417. , 440. ],
[ 42.19004622, 392. , 431. ],
[ 51.623638 , 433. , 419. ]])
所以我想从这个数组列表中提取粗体点。我不确定怎么做。我试过numpy。在那里,np。在将数组添加到列表之前,任何操作都可以,但似乎都不起作用。接下来,我想知道是否可以使用一个列表来获得粗体点。len(list)是将数组加在一起的数字。所以我有点困惑,我怎么能去检索奇异点从单独的数组在一个列表。
你的意思是:
>>> arr = np.vstack(arr)
>>> arr[arr[:, 0] == 0]
array([[ 0., 424., 491.],
[ 0., 453., 472.],
[ 0., 414., 467.]])
>>>
或者试试np.isclose
:
>>> arr = np.vstack(arr)
>>> arr[np.isclose(0, arr[:, 0])]
array([[ 0., 424., 491.],
[ 0., 453., 472.],
[ 0., 414., 467.]])
>>>
一种方法是使用np.isclose
来检测第一个元素接近于零的行:
res = [arr[np.isclose(0, arr[: ,0])] for arr in lst]
print(res)
[array([[ 0., 424., 491.]]), array([[ 0., 453., 472.]]), array([[ 0., 414., 467.]])]