如何形成行数已知列数未知的numpy矩阵?

2024-10-01 00:21:37 发布

您现在位置:Python中文网/ 问答频道 /正文

我试图形成一个特征矩阵,其中包括通过功率谱密度(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]]

Tags: 文件代码dataframedatanp矩阵outmatrix