【发布时间】:2019-10-31 05:50:41
【问题描述】:
我创建了一个 numpy 数组,数组的每个元素都包含一个相同形状的数组 (9,5)。我想要的是一个 3D 数组。
我尝试过使用 np.stack。
data = list(map(lambda x: getKmers(x, 9), data)) # getKmers creates a
# list of list from a pandas dataframe
data1D = np.array(data) # shape (350,)
data2D = np.stack(data1D)
data1D:
array([list([ pdbID AtomNo Type Eta Theta
0 1a9l.pdb 2.0 G 169.225 212.838
1 1a9l.pdb 3.0 G 168.439 206.785
2 1a9l.pdb 4.0 U 170.892 205.845
3 1a9l.pdb 5.0 G 164.726 225.982
4 1a9l.pdb 6.0 A 308.788 144.370
5 1a9l.pdb 7.0 C 185.211 209.363
6 1a9l.pdb 8.0 U 167.612 216.614
7 1a9l.pdb 9.0 C 168.741 219.239
8 1a9l.pdb 10.0 C 163.639 207.044, pdbID AtomNo Type Eta Theta
1 1a9l.pdb 3.0 G 168.439 206.785
2 1a9l.pdb 4.0 U 170.892 205.845
3 1a9l.pdb 5.0 G 164.726 225.982
4 1a9l.pdb 6.0 A 308.788 144.370
5 1a9l.pdb 7.0 C 185.211 209.363
6 1a9l.pdb 8.0 U 167.612 216.614
7 1a9l.pdb 9.0 C 168.741 219.239
8 1a9l.pdb 10.0 C 163.639 207.044
我收到此错误: 无法将大小为 9 的序列复制到维度为 5 的数组轴
我想创建一个 3D 矩阵,其中每个子数组都位于新的 3D 维度中。我猜新的形状是 (9,5,350)
【问题讨论】:
-
请分享一个数组样本和预期输出
-
所以你有一个熊猫数据框列表数组..??
-
正如 yatu 所说,数据结构似乎不正常。为了避免XY problem,你能分享更多关于你打算做什么的背景吗? Dataframes 在设计时考虑到了 2d 数据(典型情况是样本数与属性),因此将它们堆叠成 3d numpy 数组没有什么意义;您通常希望将它们作为列表/字典分开保存,或者将它们堆叠为数据框,并添加一行用于索引。
-
错误出现在哪里?可能不需要
data1D = np.array(data)步骤。np.stack与数组列表一起使用(事实上,如果给定一个数组,它只会将其视为一个列表)。np.stack(data)应该可以工作,如果data真的是匹配大小数组的列表。 -
我认为,在做我想做的事情之前,我必须使用 pd.get_values() 将 dfs 转换为矩阵,然后尝试基于此创建矩阵。最终目标是为神经网络创建一个矩阵(前馈和 rnn)。
标签: python list numpy multidimensional-array