python - 将元组列表重塑为 3D 数组
问题描述
蟒蛇 3.7
我有一个 matlab/octave .dat 文件,它具有以下结构 (35,45,48) = 75600 点,因为我不知道如何在 python 中处理该格式,所以我决定将数据作为 .txt 文件从八度和从那里操纵。
数据集中的以下几点如下所示:
(-14.46997737884521, 4.298966407775879)
这个来自 octave 的 .txt 文件给了我一个 (75600 x 1) 的数组,所以这是我的方法:
我不确定我正在制作的重塑是否为我提供了我需要的正确数组,它应该与 matlab/octave 中的完全相同。
- 用 python 读取文件并接收一个列表作为字符串
- 修改它并将其转换为 75600 个元组的列表
- 然后我重塑数组以获得精确的 3D 数组,如 octave
代码:
import numpy as np
file = 'data1.txt'
myarray = []
my_tuple_list = []
with open(file) as f:
content = f.readlines()
def createGenerator():
for i in range(5,len(content)-2):
yield content[i]
my_generator = createGenerator()
for a in my_generator:
first_part, second_part = a.split(",")
num_first_part = first_part.replace("(",'')
num_second_part = second_part.replace(")",'')
newtuple = (float(num_first_part),float(num_second_part))
my_tuple_list.append(newtuple)
arr = np.empty(len(my_tuple_list), dtype='O')
arr[:] = my_tuple_list
new_array = arr.reshape((45,35,48))
结果应该是 (45,35,48) 的数组,并且数组内的元素是元组。
解决方案
推荐阅读
- dictionary - Dafny 反向查找图
- java - Java 中的 println 语句中的逗号有何不同?
- c++ - 从文本文件中读取时,我如何知道是否已到达新行?
- java - 如何强制我的线程按顺序运行?
- java - 在一个布局中有 2 个 Recyclerview。带有复选框的垂直回收视图要么不检查,要么检查其他位置
- sql-server - SQL Server 检查约束的错误?
- markdown - 在 Github table markdown 中禁用斑马条纹
- python - 使用保存的瓶颈值进行迁移学习(使用完整模型进行推理)
- javascript - 如何使用值设置日期输入的值是下一个日期
- css - PC Chrome 和 Mac Chrome 计算盒子高度的方式不同