首页 > 解决方案 > 将元组列表重塑为 3D 数组

问题描述

蟒蛇 3.7

我有一个 matlab/octave .dat 文件,它具有以下结构 (35,45,48) = 75600 点,因为我不知道如何在 python 中处理该格式,所以我决定将数据作为 .txt 文件从八度和从那里操纵。

数据集中的以下几点如下所示:

(-14.46997737884521, 4.298966407775879)

这个来自 octave 的 .txt 文件给了我一个 (75600 x 1) 的数组,所以这是我的方法:

我不确定我正在制作的重塑是否为我提供了我需要的正确数组,它应该与 matlab/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) 的数组,并且数组内的元素是元组。

标签: pythonarraystuples

解决方案


推荐阅读