我有一个包含带密钥哈希的pickle文件 - >名单 像这样
h = { 'two': [1,2], 'three': [3,4,5]}
我想将数组转换为数组数组,使数组长度相同(只为较短的数组填充零)
所以上面的例子我希望得到像这样的结果
>>> np.asarray([[1,2,0],[3,4,5]])
array([[1, 2, 0],
[3, 4, 5]])
(我不关心哈希中的键,我也不关心数组的顺序)。
第一步是找到最长的数组,我认为这段代码会为我做的
m = max(map(len, h.values()))
但是之后如何创建数组呢? 我认为numpy.copyto()是可能的; 将原始数组复制到一个填充了零和新长度的新数组中,但它需要相同形状的数组。
答案 0 :(得分:2)
因为你从字典开始,所以这不太可能从numpy矢量化中受益;因此,解决方案将是裸循环,您可以pad
以numpy
方式np.pad
归零:
np.array([np.pad(v, (0, m - len(v)), 'constant') for v in h.values()])
#array([[1, 2, 0],
# [3, 4, 5]])
或香草列表方式:
np.array([v + [0] * (m - len(v)) for v in h.values()])
#array([[1, 2, 0],
# [3, 4, 5]])