【问题标题】:Python3, convert list of array to purely array of floatPython3,将数组列表转换为纯浮点数组
【发布时间】:2017-03-14 16:04:01
【问题描述】:

我有一个滚动窗口功能。它将一个 numpy 数组转换为数组列表。但是,我想将此函数的结果转换为纯数组。

import numpy as np

def get_rolling_window(arr, window):
    arr_rolled = [arr[i:i+window] for i in np.arange(arr.shape[0])]
    return arr_rolled

x = np.arange(10).reshape(5,2)
x_rolled = get_rolling_window(x, 2)

现在 x_rolled 是一个数组列表。如果我使用

x_arr = np.array(x_rolled)

它不起作用,因为 x_arr 的 dtype 是 object,而不是 float 或 int。如果你

print(x_arr.shape)

你会得到 (5,)。对于纯浮点数组,其形状应为 (5,2,2)。

你知道怎么做吗?

谢谢

【问题讨论】:

  • np.concatenate(x_rolled) 带给你什么?

标签: arrays list python-3.x numpy


【解决方案1】:

您的x_rolled 是一个不同形状的数组列表。所以np.array 不能把它变成一个多维整数数组。

In [235]: x_rolled
Out[235]: 
[array([[0, 1],
        [2, 3]]), array([[2, 3],
        [4, 5]]), array([[4, 5],
        [6, 7]]), array([[6, 7],
        [8, 9]]), array([[8, 9]])]
In [236]: [x.shape for x in x_rolled]
Out[236]: [(2, 2), (2, 2), (2, 2), (2, 2), (1, 2)]

如果我省略最后一个元素,我会得到一个 3d 数组:

In [237]: np.array(x_rolled[:-1])
Out[237]: 
array([[[0, 1],
        [2, 3]],

       [[2, 3],
        [4, 5]],

       [[4, 5],
        [6, 7]],

       [[6, 7],
        [8, 9]]])
In [238]: _.shape
Out[238]: (4, 2, 2)

可以很容易地转换为浮点数

np.array(x_rolled[:-1]).astype(float)

我怀疑您的滚动功能无法正常工作。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2023-03-14
    • 1970-01-01
    • 2012-05-04
    • 2013-10-20
    • 2018-09-25
    • 2019-07-05
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多