我试图得到一个特定字典值的向量,这些值在numpy数组中。以下是阵列的外观:
import numpy as np
edge_array = np.array(
[[1001, 7005, {'lanes': 9, 'length': 0.35, 'type': '99', 'modes': 'cw'}],
[1001, 8259, {'lanes': 10, 'length': 0.46, 'type': '99', 'modes': 'cw'}],
[1001, 14007, {'lanes': 7, 'length': 0.49, 'type': '99', 'modes': 'cw'}]])
每行的前两个值都有一个向量(即1001
和7005
),但是我需要另一个向量来表示与'lanes'
相关的值。在
以下是我目前为止的代码:
^{pr2}$我得到的错误如下:
lane_values = edge_array[:, 2['lanes']]
TypeError: 'int' object has no attribute '__getitem__'
如果您需要进一步澄清,请告诉我,谢谢!在
@Zwinck建议使用结构化数组。这里有一种方法
为字典部分定义一个数据类型。它有不同数据类型的字段
将该数据类型嵌入一个较大的数据类型中。我对前两个值使用了子数组格式:
^{pr2}$现在创建数组。我编辑了你的表达式以适应
dt
。元组和列表的混合很重要。我本来可以从你的对象数组转移数据的(todo?)在现在可以通过'f0'字段名访问2个int值:
“车道”通过字段名称索引的双重应用程序访问(因为它们是字段中的字段):
这不是一个完全有效的例子。很难做到这点。类型尚不清楚。我怀疑,你不知怎么和纽比一起工作,但很难说。在
总之,用2['something']建立索引是不正确的,错误会告诉您原因。它试图用整数中的键来索引。查看如何在python/numpy中完成索引。在
但这就是你如何提取你的“车道”:
更多新潮款式:
^{pr2}$子表达式
2['lanes']
没有意义:您将索引到数字2。在相反,请尝试:
或者:
^{pr2}$上面给出了一个普通的Python
list
;如果你想要一个NumPy数组,就必须调用列表中的np.array()
。在但是,更好的解决方案是将数据转换为“结构化数组”,其中包含命名列,然后可以按名称高效地编制索引。如果数组有很多行,这将对效率产生很大影响。在
相关问题 更多 >
编程相关推荐