我一直在生成可变长度列表,这是一个简化的例子。
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文档中看不到任何内容)
答案 0 :(得分:1)
你已经完成了这项工作。您可以使用min函数保存一些行。
np_array = np.zeros(length)
_l = min(length, len(list_like))
np_array[:l] = list_like[:l]
有一种更优雅的方式,首先创建一个空数组,填充它然后用零填充尾部。