从可变长度列表创建固定长度的numpy数组

时间:2016-01-30 23:26:21

标签: python python-3.x numpy

我一直在生成可变长度列表,这是一个简化的例子。

list_1 = [5] * 5
list_2 = [8] * 10

然后我想转换为np.array进行操作。因此,它们需要具有相同的长度(例如1200),尾部要么填充零,要么截断目标长度。

对于8的固定长度,我考虑设置一个零数组,然后填写相应的条目:

np_list_1 = np.zeros(8)
np_list_1[0:5] = list_1[0:5]
np_list_2 = np.zeros(8)
np_list_2[0:8] = list_2[0:8]     # longer lists are truncated

我已经创建了以下函数来生成这些

def get_np_fixed_length(list_like, length):
    list_length = len(list_like)
    np_array = np.zeros(length)
    if list_length <= length:
        np_array[0:list_length] = list_like[:]
    else:
        np_array[:] = list_like[0:length]
    return np_array

有更有效的方法吗? (我在numpy文档中看不到任何内容)

1 个答案:

答案 0 :(得分:1)

你已经完成了这项工作。您可以使用min函数保存一些行。

np_array = np.zeros(length)
_l = min(length, len(list_like))
np_array[:l] = list_like[:l]

有一种更优雅的方式,首先创建一个空数组,填充它然后用零填充尾部。