gpt4 book ai didi

python - 通过用前一个值填充中间值来增加数组的大小

转载 作者:太空宇宙 更新时间:2023-11-04 09:36:31 24 4
gpt4 key购买 nike

我有一个大小为 19 的数组。我想将其大小增加到 30(new_array)。

size =len(VM)    
index = np.linspace(1,size,size)/size
index30 = np.linspace(1,30,30)/30
new_array = np.empty(shape=30)

VM 是一个大小为 19 的数组

索引

[0.05263158 0.10526316 0.15789474 0.21052632 0.26315789 0.31578947
0.36842105 0.42105263 0.47368421 0.52631579 0.57894737 0.63157895
0.68421053 0.73684211 0.78947368 0.84210526 0.89473684 0.94736842
1. ]

指数30

[0.03333333 0.06666667 0.1        0.13333333 0.16666667 0.2
0.23333333 0.26666667 0.3 0.33333333 0.36666667 0.4
0.43333333 0.46666667 0.5 0.53333333 0.56666667 0.6
0.63333333 0.66666667 0.7 0.73333333 0.76666667 0.8
0.83333333 0.86666667 0.9 0.93333333 0.96666667 1. ]

填充新数组:

如果我们考虑索引数组的前两个元素0.05263158 0.10526316,这两个值之间的index30数组的所有值,它们在new_array中的对应位置应该用对应的VM数组的值填充到索引数组中值 0.05263158 的位置等等。我可以使用 for 循环来执行此操作,但我正在寻找更有效的方法来执行此操作?

输入:

[ 1,  2,  3,  4,  5,  6,  7,  8,  9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19]

预期输出:

[nan,1,1,2,3,3,4,5,5,6,6,7,8,8,9,10,10,11,12,12,13,13,14,15,15,16,17,17,18,19]

最佳答案

编辑:您可以使用 np.piecewise .使用 np.less_equalnp.outer 创建 condlistnp.append 一个 nanVM 以创建 funclist 的值,例如:

new_array = np.piecewise( x = index30, 
condlist = np.less_equal.outer(indexVM, index30),
funclist = np.append(VM,np.nan))

如果您愿意使用pandas,您可以使用方法'ffill' 执行reindex

import numpy as np
import pandas as pd

VM = np.arange(1,20)
size = len(VM)
indexVM = np.linspace(1,size,size)/size
index30 = np.linspace(1,30,30)/30

new_array = pd.Series(VM, index=indexVM).reindex(index30, method='ffill').values
print (new_array)
array([nan, 1., 1., 2., 3., 3., 4., 5., 5., 6., 6., 7., 8.,
8., 9., 10., 10., 11., 12., 12., 13., 13., 14., 15., 15., 16.,
17., 17., 18., 19.])

关于python - 通过用前一个值填充中间值来增加数组的大小,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53488175/

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