如何使用Python Numpy将数组拆分后存入指定键名的字典
问题解答
原代码问题
你原本使用的np.array_split(a, 3)是将数组按从左到右的顺序平均切为3段,得到的切片逻辑和预期输出的取值规则不符,因此无法得到目标结果。
正确实现方案
你预期的取值规则是按步长3分组:
one对应索引0、3、6、9的元素two对应索引2、5、8、11的元素three对应索引1、4、7、10的元素
方法1:数组重塑+转置(更简洁,适合大规模数据)
import numpy as np set_names = np.array(['one', 'two', 'three']) a = np.array([12,4,2,45,6,7,2,4,5,6,12,4]) # 先重塑为4行3列,转置后得到3组值,调整顺序和set_names一一对应 split_values = a.reshape(4, 3).T[[0, 2, 1]] dictionary = dict(zip(set_names, split_values))
如果你需要输出的键顺序和你给出的示例完全一致,把set_names调整为np.array(['one', 'three', 'two']),同时去掉转置后的索引调整即可。
方法2:直接切片(逻辑更直观)
import numpy as np a = np.array([12,4,2,45,6,7,2,4,5,6,12,4]) dictionary = { 'one': a[::3], 'two': a[2::3], 'three': a[1::3] }
输出验证
两种方法运行后打印dictionary都可以得到你需要的匹配值:
{'one': array([12, 45, 2, 6]), 'two': array([2, 7, 5, 4]), 'three': array([ 4, 6, 4, 12])}
内容的提问来源于stack exchange,提问作者georgehere
相关产品推荐
相关产品推荐

