我有一个表格数据,如:
+---+----+----+
| | a | b |
+---+----+----+
| P | 1 | 2 |
| Q | 10 | 20 |
+---+----+----+
我希望使用Dict
来表示这一点。
使用列名和行名:
x = ["a", "b"]
y = ["P", "Q"]
和数据
data = [ 1 2 ;
10 20 ]
如何创建字典对象d
,以便d["a", "P"] = 1
等等?有没有像
d = Dict(zip(x,y,data))
答案 0 :(得分:4)
您的代码只需稍加更改即可使用Iterators.product
:
d = Dict(zip(Iterators.product(x, y), data.'))
要执行此操作,您需要在项目中添加一行using Iterators
,并且可能需要Pkg.add("Iterators")
。因为Julia矩阵是列主要的(元素按列顺序存储,列按矩阵顺序存储),我们需要使用转置运算符data
转置.'
矩阵。
这是您问题的字面答案。我不建议这样做。如果您有表格数据,最好使用DataFrame。这些不是二维的(行没有名称),但可以通过添加其他列并使用select
来修复。