将字典的内容导出到amxn矩阵

我有一本字典,可以改变对象的数量。每个对象的类型将始终是一个3元素的ND数组。例如:

exampleDict = {u'A': array([ 1, 2, 3]), u'B': array([ 2, 3, 4]), u'C': array([ 3, 4, 5]), u'D': array([ 4, 5, 6])}

使用for循环,我希望能够创建一个看起来像这样的矩阵:

exampleMatrix = array([[ 1, 2, 3], [ 2, 3, 4], [ 3, 4, 5], [ 4, 5, 6]])

我可以使用以下方法创建正确尺寸的0矩阵:

exampleMatrix = np.zeros((len(exampleDict), 3))

但是,我不知道如何适当地填充该矩阵。我正在尝试使用for循环。我愿意接受其他建议。谢谢!


婷婷同学_
浏览 120回答 2
2回答

九州编程

这里最棘手的部分是,不能保证在某些版本的Python中不能对字典进行排序(如果您使用的是Python 2.7,则肯定不会对字典进行排序),因此必须有一种方法来确定最终数组的值顺序。由于看起来您想按键的字母顺序创建数组,因此可以使用列表推导和sorted:np.array([v for _, v in sorted(exampleDict.items())])array([[1, 2, 3],       [2, 3, 4],       [3, 4, 5],       [4, 5, 6]])

慕的地10843

如果您想保留键以供将来参考(与其他变量相比),并且仍将其视为numpy数组,则可以使用Pandas的数据框:my_array=pandas.DataFrame(exampleDict)然后,您可能需要对进行numpy操作my_array.values。由于您拥有密钥,因此熊猫在其余的代码中可能会做很多工作,从而省去了一些麻烦。我建议去看看。如果您想保持简单,除了列表理解其他答案之外,还有一种更简单的方法。尽管我不确定您是否会面对大型阵列产生任何影响,但是使用解决方案进行速度测试的方法是:np.array([v for _, v in (exampleDict.items())]):3.63unp.array([v for v in exampleDict.values()]):3.53unp.array(list(exampleDict.values())):3.40u不用说,熊猫解决方案将比其他方法花费更多的时间,它仅保留更多信息,并且“也许”将速度提高到其他地方。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python