首页 > 解决方案 > np.array() 在给定多维数组时创建列表对象数组,但应创建“正常”数组

问题描述

当我尝试将多维列表转换为多维数组时,发生了一些奇怪的事情。这是一个示例代码,它应该是什么样子以及我的目标是什么。这个例子有效:

array = [[1, 1], [2, 2]]
array = np.array(array)
print(array)

输出如预期:

[[1 1]
 [2 2]]

现在我的代码出错了,我不知道为什么。稍后我需要 numpy 数组用于 matplotlib。building_polygons 是一个多维数组。它包含一个多边形列表,其中每个多边形包含一个点列表,每个点都包含一个 x,yz 坐标。

all_poly_x = []
all_poly_y = []
all_poly_z = []
for polygon in building_polygons:
    poly_x = []
    poly_y = []
    poly_z = []
    for point in polygon:
        poly_x.append(point[0])
        poly_y.append(point[1])
        poly_z.append(point[2])
    poly_x.append(poly_x[0])  # closing polygon
    poly_y.append(poly_y[0])  # closing polygon
    poly_z.append(poly_z[0])  # closing polygon

    all_poly_x.append(poly_x)
    all_poly_y.append(poly_y)
    all_poly_z.append(poly_z)

all_poly_x = np.array(all_poly_x)
all_poly_y = np.array(all_poly_y)
all_poly_z = np.array(all_poly_z)

执行 np.array(...) 命令时发生错误。不是像工作示例中所示创建一个 numpy 数组,而是创建以下示例,例如所有 x 值(我缩短了它):

[
 list([388426.87, 388433.48, 388447.84, 388426.87, 388426.87])
 list([388424.21, 388450.45, 388412.13, 388424.21, 388424.21])
 ...
 list([388457.11, 388430.84, 388469.1, 388457.11, 388457.11])
 list([388467.0, 388496.0, 388491.0, 388467.0, 388467.0])
]

那么为什么要创建一个带有列表对象的 numpy 数组呢?

标签: pythonarraysnumpy

解决方案


由于 hpaulj 悲伤,列表的长度不同。这让我很困惑。我没有想到这一点。谢谢你的遮阳篷。


推荐阅读