与以下代码段相关的问题,初始化空列表并追加

时间:2018-04-16 15:19:56

标签: python python-3.x numpy scipy

我编写了一个程序,包括以下函数,它涉及初始化一个空列表,并在迭代期间附加它。

def build_window_sequence(x,y,windowsize):
    num_sequence = x.shape[0]
    num_size = x.shape[1]
    x_window_sequence = []
    y_window = []
    for i in range(num_sequence):
        low_index = 0
        high_index = 0
        for j in range(num_size):
            low_index = j
            high_index = low_index+windowsize-1
            current_index = low_index+round(windowsize/2)
            x_window_sequence = x_window_sequence.append(train_x[i,low_index:high_index])
            y_window = y_window.append('train_y[current_index]')
    return x_window, y_window

但是,运行该程序会出现以下错误消息

x_window_sequence = x_window_sequence.append('train_x[i,low_index:high_index]')
AttributeError: 'NoneType' object has no attribute 'append'

仅为了解更多信息,所涉及的数组具有以下形状

train_x shape (5000, 501)
train_y shape  (5000, 501)

2 个答案:

答案 0 :(得分:0)

x_window_sequence = x_window_sequence.append(train_x[i,low_index:high_index])

您在此处分配.append的结果,但.append不返回任何内容(即返回None)。您可以阅读更多here

答案 1 :(得分:0)

None到位操作,返回x_window_sequence.append(train_x[i,low_index:high_index]) y_window.append('train_y[current_index]')

因此,您应该在不指定变量的情况下追加:

function extractIds(arr) {
    return arr.reduce((a, item) => {
        if (Array.isArray(item)) {
            return [
                ...a,
                ...extractIds(item)
            ];
        }

        return [
            ...a,
            item.id
        ];
    }, [])
}

extractIds([{id: 1}, [{id: 2}], {id: 3}, [{id: 4}, [{id: 5}, [{id: 6}]]]])

这在Python documentation中有明确说明。