我试图形成一个特征矩阵,其中包括通过功率谱密度(PSD)获得的峰值。我有大约1425个数据文件,其中这个数字将是我的矩阵的行数。然而,峰值因每个文件而异,因为每个文件可能具有不同数量的峰值(例如,文件15具有5个峰值,文件20具有3个峰值)。因此,我怎样才能建立一个矩阵,在这个矩阵中输入关于列数的峰值?你知道吗
我试图实现代码(可以在下面找到),但是,我必须初始化列数,并且即使它通过了列数的范围,它也会继续打印
Data_PSD = np.zeros((15, 1425))
# Forming a feature matrix from peaks PSD values:
y_axis_PSD_peaks = np.asarray(y_axis[0].transpose())
DataFrame_Feature_PSD = np.array(y_axis_PSD_peaks)
DataSizecolumnPSD = DataSizecolumnPSD + 1
# print('Data Size column: ', DataSizecolumn)
Data_PSD[DataSizecolumnPSD - 1] = DataFrame_Feature_PSD
if DataSizecolumnPSD in range(1, y_axis.shape[0]):
DataSizerowPSD = DataSizerowPSD + 1
# print('Data Size row: ', DataSizerow)
Data_PSD[DataSizerowPSD - 1] = DataFrame_Feature_PSD
if DataSizecolumnPSD == 0:
Data_PSD[DataSizecolumnPSD - 1] = 0
print('Signal/Exp. {0}'.format(count))
# print('Data Frame: ', Data)
Data_tran = Data_PSD.transpose()
# print('Data Frame Transpose: ', Data_tran)
# PSD_Matrix = np.append(arr=PSD_Matrix, values=Data_tran)
Feature_PSD_Matrix = Data_tran
print('Saved PSD Dataset file', Feature_PSD_Matrix)
读了16号文件后,我一直出错。错误是: 索引器错误:索引15超出大小为15的轴0的界限
更新1
我试图实现这个列表,但是,我得到了类似[TypeError: 'float' object is not iterable]
的错误。列表的代码如下:
y_axis_PSD_peaks = np.asarray(y_axis[0].transpose())
DataFrame_Feature_PSD = np.array(y_axis_PSD_peaks)
Data_PSD = DataFrame_Feature_PSD.tolist()
for row in Data_PSD:
for elem in row:
print(elem, end=' , ')
Feature_PSD_Matrix = Data_PSD
我找到了这个网站:https://snakify.org/en/lessons/two_dimensional_lists_arrays/#section_4
更新2
我通过执行以下代码成功地解决了这个问题:
for row in range(1425):
Data_PSD.append(PSD_Peaks_list[0:PSD_Peaks_list_shape[0]])
row =+1
print(Data_PSD)
break
Feature_PSD_Matrix = Data_PSD
现在,我正在尝试将矩阵保存到一个txt文件中,但是,它会继续打印具有确切行数的空行。如何在txt文件中保存浮点数列表?以下代码是我一直在获取空行的代码:
with open('filename.txt','w') as out_file:
for i in range(len(Feature_PSD_Matrix)):
out_string = ""
# Feature_PSD_Matrix_str = map(str, Data_PSD)
out_string = Data_PSD
out_string = "\n"
out_file.write('{} \n'.format(out_string))
更新3
[[0.0007990594037643691, 0.0004403783323228196, 0.000598699480390045, 0.0007168056730554628], [0.0008817249681644274, 0.00045377012471994107, 0.0006534686195005596, 0.0008000537399756023], [0.0005702091244336749, 0.00037008247488756936, 0.0005395840488197647, 0.0005684589958136876]]
我想把它改成:
[[0.0007990594037643691, 0.0004403783323228196, 0.000598699480390045, 0.0007168056730554628]
[0.0008817249681644274, 0.00045377012471994107, 0.0006534686195005596, 0.0008000537399756023]
[0.0005702091244336749, 0.00037008247488756936, 0.0005395840488197647, 0.0005684589958136876]]
目前没有回答
相关问题 更多 >
编程相关推荐