在最冷的地方 2021-04-19 11:39 采纳率: 50%
浏览 1498
已采纳

python :need at least one array to concatenate

#!/usr/bin/python
#-*- coding:cp936 -*-
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
import os
def load_file(filepath):
    dataframe = pd.read_csv(filepath, header=None, delim_whitespace=True)
    return dataframe.values

def load_dataset(data_rootdir, dirname, group):
    '''
    该函数实现将训练数据或测试数据文件列表堆叠为三维数组
    '''
    filename_list = []
    filepath_list = []
    X = []
    
    # os.walk() 方法是一个简单易用的文件、目录遍历器,可以高效的处理文件、目录。
    for rootdir, dirnames, filenames in os.walk(data_rootdir + dirname):
        for filename in filenames:
            filename_list.append(filename)
            filepath_list.append(os.path.join(rootdir, filename))
        #print(filename_list)
        #print(filepath_list)
    
    # 遍历根目录下的文件,并读取为DataFrame格式;
    for filepath in filepath_list:
        X.append(load_file(filepath))
    
    X = np.dstack(X) # dstack沿第三个维度叠加,两个二维数组叠加后,前两个维度尺寸不变,第三个维度增加;
    y = load_file(data_rootdir+'/y_'+group+'.txt')
    print('{}_X.shape:{},{}_y.shape:{}\n'.format(group,X.shape,group,y.shape))
    return X, y

train_rootdir = 'F:/桌面/毕设/python/wanzheng/data/train/'
test_rootdir = 'F:/桌面/毕设/python/wanzheng/data/test/'
data_dirname = '/Inertial Signals/'
trainX, trainy = load_dataset(train_rootdir, data_dirname, 'train')
testX, testy = load_dataset(test_rootdir, data_dirname, 'test')

 

 

  • 写回答

1条回答 默认 最新

  • 天元浪子 Python领域优质创作者 2021-04-19 15:25
    关注

    如果传给np.dstack()的参数是一个空的列表或元组,就会抛出题主给出的错误信息。建议在数组深度合并前,检查一下X的长度,大概率是空的。

    >>> import numpy as np
    >>> np.dstack([])
    Traceback (most recent call last):
      File "<pyshell#65>", line 1, in <module>
        np.dstack([])
      File "<__array_function__ internals>", line 6, in dstack
      File "C:\Users\xufive\AppData\Local\Programs\Python\Python37\lib\site-packages\numpy\lib\shape_base.py", line 723, in dstack
        return _nx.concatenate(arrs, 2)
      File "<__array_function__ internals>", line 6, in concatenate
    ValueError: need at least one array to concatenate
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

悬赏问题

  • ¥20 5037端口被adb自己占了
  • ¥15 Error in check.length("fill") : 'gpar'成分'fill'的长度不能为零
  • ¥15 python:excel数据写入多个对应word文档
  • ¥60 全一数分解素因子和素数循环节位数
  • ¥15 ffmpeg如何安装到虚拟环境
  • ¥188 寻找能做王者评分提取的
  • ¥15 matlab用simulink求解一个二阶微分方程,要求截图
  • ¥30 乘子法解约束最优化问题的matlab代码文件,最好有matlab代码文件
  • ¥15 写论文,需要数据支撑
  • ¥15 identifier of an instance of 类 was altered from xx to xx错误