python - 将 2D 数组转换为 3D numpy 数组
问题描述
我创建了一个 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)
解决方案
你需要使用
data.reshape((data.shape[0], data.shape[1], 1))
例子
from numpy import array
data = [[11, 22],
[33, 44],
[55, 66]]
data = array(data)
print(data.shape)
data = data.reshape((data.shape[0], data.shape[1], 1))
print(data.shape)
运行示例首先打印 2D 数组中每个维度的大小,重新调整数组的形状,然后汇总新 3D 数组的形状。
结果
(3,2)
(3,2,1)
来源:https ://machinelearningmastery.com/index-slice-reshape-numpy-arrays-machine-learning-python/
推荐阅读
- node.js - 节点js路由需要等待另一个请求的处理
- c# - 属性“ReferencePath”的加载失败。不能添加 ... 作为参考路径,因为它是相对的
- reactjs - ReactJS 通过 axios.post 从表单选择发送数据
- r - 使用循环重命名多个数据框的变量,从列表中引用数据框名称
- python - 我在函数中使用 try-and-except 。以及其他可能导致值错误但不会引发异常的函数。国际劳工组织?
- sql-server - 用于将 .sqlproj 发布到数据库实例的 CLI 工具
- netlogo - 从链接列表中提取海龟
- angular8 - Cumulocity - 访问数据点模式
- c# - UWP 应用程序更新后无法读取文件
- python - 如何在 python 脚本中解码 FST 编码的 redis 键?