希望我在标题中使用正确的同义词,以描述我的问题。
我的数据具有以下结构
D = {E_1, E_2...,E_n} with E_i = {M_{i,1}, M_{i,2},...M_{i,m}} and each M_{i,j} is a 6x2 Matrix.
我使用尺寸为n x m x 6 x 2的numpy数组保存数据。如果每个数据集E_i具有相同数量的矩阵,就可以了。
但是此解决方案不再起作用,因为我现在使用的是矩阵数量不同的数据集E_i,即E_i具有m_i个矩阵。
Pandas中也许可以解决我的问题吗?最后,我需要输入每个矩阵以作为一个numpy数组进行操作,即乘,逆,行列式……。
答案 0 :(得分:0)
您可以尝试在熊猫中使用多重索引来执行此操作。这使您可以按级别选择数据框。一个简单的示例说明如何实现这样的目标:
D = np.repeat([0, 1], 12)
E = np.repeat([0, 1, 0, 1], 6)
print(D, E)
index_cols = pd.MultiIndex.from_arrays(
[D, E],
names=["D_idx", "E_idx"])
M = np.ones([24,2])
df = pd.DataFrame(M,
index=index_cols,
columns=["left", "right"])
print(df)
这为您提供了数据框:
left right
D_idx E_idx
0 0 1.0 1.0
0 1.0 1.0
0 1.0 1.0
0 1.0 1.0
0 1.0 1.0
0 1.0 1.0
1 1.0 1.0
1 1.0 1.0
1 1.0 1.0
1 1.0 1.0
1 1.0 1.0
1 1.0 1.0
1 0 1.0 1.0
0 1.0 1.0
0 1.0 1.0
0 1.0 1.0
0 1.0 1.0
0 1.0 1.0
1 1.0 1.0
1 1.0 1.0
1 1.0 1.0
1 1.0 1.0
1 1.0 1.0
1 1.0 1.0
然后您可以根据级别对数据帧进行切片,即,如果您要检索集合D_1
中的所有元素,则可以选择:df.loc[[(0, 0), (0, 1)], :]
您可以使用list(zip(d_idx, e_idx))
生成这样的选择器,以便选择特定的行。
您可以在此处找到有关切片和选择数据框的更多信息:
https://pandas.pydata.org/pandas-docs/stable/user_guide/advanced.html