因此,我试图找到执行以下转换的最快/最有效的方法。
从一个三列数组
import numpy as np
arr = np.array([[1,2,3,3],[5,6,7,8],[8,7,6,5]]).T
array([[1, 5, 8],
[2, 6, 7],
[3, 7, 6],
[3, 8, 5]])
字符串
转换为一个dict,该dict以一个元组列表作为值从一列中删除,如下所示:
{1:[(5,8)], 2:[(6,7)],3: [(7,6),(8,5)]}
型
3条答案
按热度按时间ergxz8rk1#
正如注解中所指出的,如果你正在构造一个dict,一个python对象,那么你只需要使用常规的Python方法。我建议在数组上使用
.tolist()
,因为这会转换为适当的Python数值类型(但它确实会生成一个中间列表)。因此,从那里开始,您只需使用您最喜欢的Python dict分组习惯用法:字符串
如果你不想创建一个潜在的巨大的中间列表,那么你可以手动转换类型(这里我假设基于你的例子是
int
):型
2q5ifsrm2#
字符串
defaultdict使收集“相关”值变得容易。只需定义一个使列表值作为默认值的函数。
型
然后添加元素,使用第一个元素作为键,其余的作为元组(附加到default [])。
型
对于迭代,列表比数组快一点。
tag5nh1u3#
字符串