如何格式化numpy数组?

2024-10-02 00:40:38 发布

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

我有这样的数据

listL= array([array([-12939613.07220617,   3962855.50690994]),
       array([-12939614.67349505,   3962828.80807231]),
       array([-12939484.00289515,   3962828.1637531 ]),
       array([-12939484.98046737,   3962854.91251931]),

print(type(listL)) -> <class 'numpy.ndarray'>
print(type(listL[0])) -> <class 'numpy.ndarray'>
print(type(listL[0][0])) -> <class 'numpy.float64'>

我有第二个数据是这样的:

^{pr2}$

两组数据的类型是相同的,但是我有一个函数可以处理'a',但不能处理'listL',我不知道为什么。在

A[spatial.KDTree(A).query(coordinate)[1]]

有用,但是

listL[spatial.KDTree(listL).query(coordinate)[1]]

返回错误:

not enough values to unpack (expected 2, got 1)

Tags: 数据numpy类型coordinatetypequeryarrayspatial
1条回答
网友
1楼 · 发布于 2024-10-02 00:40:38

ListL在某些方面是一种病理结构,它是一个二维数组的数组。在

numpy/scipy在某种程度上可以优雅地接受大多数可以解释为2D数组的东西,例如,如果您用KDTree(list(ListL))KDTRee(ListL)进行重新处理,它是有效的。在

为什么有用?因为list(listL)的行为与大多数“本质上是2D”结构(如列表等)类似。我们可以通过arrayasarrayasanyarray等发送它,以获得真正的2D数组。在

>>> np.array(list(listL))
array([[-12939613.07220617,   3962855.50690994],
       [-12939614.67349505,   3962828.80807231],
       [-12939484.00289515,   3962828.1637531 ],
       [-12939484.98046737,   3962854.91251931]])
>>> np.array(list(listL)).shape
(4, 2)

数组是少数仍然会使数组转换机制出错的情况之一:

^{pr2}$

我们可以看到,尽管我们试图将其转换为普通数组,listL仍将其形状报告为1D。这似乎是引发您所观察到的异常的原因。在

相关问题 更多 >

    热门问题