gpt4 book ai didi

python - 将列表复制到 numpy 数组的一部分

转载 作者:太空宇宙 更新时间:2023-11-03 15:14:57 27 4
gpt4 key购买 nike

我有一个大小不同的列表,我想将其复制到 numpy 数组上。我已经有办法了,但我想看看是否有更优雅的方法。

假设我有以下内容:

import numpy as np
data = np.full((10,), np.nan)

# I want to copy my list into data starting at index 2
def apply_list(my_list):
data[2:2+len(mylist)] = mylist

# Example
tmp = [1, 2, 3, 4] # can vary from 2 to 8 elements
apply_list(tmp)

在此之后,我希望数据看起来像这样:

[nan, nan, 1, 2, 3, 4, nan, nan, nan, nan]

请记住,len(mylist) 的范围是 2 到 8。

我用 NaN 标记未使用的位置,并且数据已预先分配,并且大小应始终=10,无论 my_list 的大小如何。因此,简单地追加是行不通的。

我特别不喜欢做太多2:2+len(mylist)。有没有更好/更干净的方法来做到这一点?

最佳答案

我不知道有任何 numpy 函数可以简化这个过程。但是,您可以将其包装为函数,从而隐藏复杂性:

def put(arr, subarr, startidx):
arr[startidx:startidx+len(subarr)] = subarr
return arr

或使用顺序索引(不推荐):

def put(arr, subarr, startidx):
arr[startidx:][:len(subarr)] = subarr
return arr

您还可以用 NaN 填充您的 mylist:

np.pad(np.array(mylist, dtype=float), 
(2, 8-len(mylist)),
mode='constant',
constant_values=np.nan)

关于python - 将列表复制到 numpy 数组的一部分,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43943844/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com