将元组列表重塑为3D数组

时间:2019-07-16 08:05:59

标签: python arrays tuples

Python 3.7

我有一个matlab / octave .dat文件,该文件具有以下结构(35,45,48)= 75600点,因为我不知道如何在python中处理该格式,因此我决定将数据导入为。八度音阶中的txt文件,然后从那里进行操作。

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

(-14.46997737884521, 4.298966407775879)

这个八度的.txt文件为我提供了(75600 x 1)的数组,所以这是我的方法:

我不确定我正在进行的重塑是否可以为我提供所需的正确数组,该数组应该与在matlab / octave中完全相同。

  • 使用python读取文件并接收字符串列表
  • 修改它并将其转换为75600元组的列表
  • 然后我对数组进行整形以获得与八度相同的3D数组

代码:

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)的数组,并且数组内的元素是元组。

0 个答案:

没有答案