python - 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 数组呢?
解决方案
由于 hpaulj 悲伤,列表的长度不同。这让我很困惑。我没有想到这一点。谢谢你的遮阳篷。
推荐阅读
- python-3.x - 使用 os.path 和 pathlib Mac OSX Catalina 时的奇怪路径行为
- python-3.x - 如何加快 SpaCy 的依赖解析?
- arrays - 将 API 返回数组数据从父组件传递给 Angular 中的子组件
- python - 为什么 exec() 很危险?
- google-apps-script - Google Apps 脚本:在回复 Gmail 邮件时引用以前的邮件线程
- c# - 脚本的整数不会使用另一个脚本更改
- go - Go Ticker:获取状态?
- mysql - 前一个月表中的 SQL 计数
- jquery - 在asp.net mvc中将多个图像+多个数组对象发送到控制器
- json - 如何使用 React 将 JSON 数据中的图像渲染到表格行中?