numpy 在Python中将0插入到特定条件的列表中

qfe3c7zg  于 2023-03-08  发布在  Python
关注(0)|答案(1)|浏览(144)

我有一个列表J和一个numpy数组inv_r。我想基于J得到一个新的列表inv_r2,如下所示,但是每当J[0][0]出现时,我想插入0。我给出了当前输出和预期输出。

import numpy as np

inv_r2=[]
J=[[0, 2, 0, 6, 7, 9, 10]]
index=[[]]

inv_r=np.array([[19436.34013609, 20118.9577258 , 20606.73993168, 19471.35381891,
    20144.97489348, 19518.70812614, 20685.76698401, 20032.65982561,
    19694.87399016, 20191.66204251, 20289.75387733, 19436.34013609]])

for i in range(0,len(J[len(index)-1])):
    inv_r1=inv_r[0][J[len(index)-1][i]]
    inv_r2.append(inv_r1)
print(inv_r2)

当前输出为

[19436.34013609, 20606.73993168, 19436.34013609, 20685.76698401, 20032.65982561, 20191.66204251, 20289.75387733]

预期输出为

[0.0, 20606.73993168, 0.0, 20685.76698401, 20032.65982561, 20191.66204251, 20289.75387733]
lyfkaqu1

lyfkaqu11#

不要使用循环,使用numpy的方法:

j = np.array(J[0])

out = np.r_[0, inv_r.ravel()][np.where(j==j[0], 0, j+1)]

输出:

array([    0.        , 20606.73993168,     0.        , 20685.76698401,
       20032.65982561, 20191.66204251, 20289.75387733])

相关问题