【问题标题】:Conditional Numpy slicing and append to another array条件 Numpy 切片并附加到另一个数组
【发布时间】:2021-06-04 14:38:08
【问题描述】:

我在 Python 中有两个 numpy 数组。

vec_1 = np.array([2.3, 1.4, 7.3, 1.8, 0, 0, 0])
vec_2 = np.array([29, 7, 5.8, 2.4, 6.7, 5, 8])

我想要来自 vec_1 的切片,其中切片将全为 0(最后一个除外)加上前面的(非 0)值,这样来自 vec_1 的切片将是:

slice = ([1.8,0,0])

切片将替换 vec_2 的最后 x 个元素,使其看起来像这样:

vec_2 = ([29, 7, 5.8, 2.4, 1.8, 0, 0])

本例中vec_2 的最后3 个元素被vec_1 中的切片替换。最后,如何使它成为动态的,以便在步骤 1 中确定切片长度,然后替换 vec_2 中的最后 x 个元素。当在 vec_1 中观察到 0 时,从该点到数组末尾都是 0。

【问题讨论】:

    标签: python numpy append conditional-statements slice


    【解决方案1】:
    import numpy as np
    
    vec_1 = np.array([2.3, 1.4, 7.3, 1.8, 0, 0, 0])
    vec_2 = np.array([29, 7, 5.8, 2.4, 6.7, 5, 8])
    
    ##Take the lowest value where 0 appears in vec_1 and subtract 1. :-1 to remove the last 0
    vec_1_slice = vec_1[np.where(vec_1 == 0)[0][0] - 1:-1]
    
    ##Remove the last however many digits are in vec_1_slice then add vec_1_slice
    vec_2 = np.append(vec_2[:-len(vec_1_slice)], vec_1_slice)
    

    输出

    vec_2
    Out[237]: array([29. ,  7. ,  5.8,  2.4,  1.8,  0. ,  0. ])
    

    【讨论】:

    • 测试了这个解决方案,效果很好。谢谢!
    猜你喜欢
    • 2012-09-17
    • 2020-12-21
    • 2019-04-12
    • 2018-04-22
    • 1970-01-01
    • 1970-01-01
    • 2022-11-19
    • 2022-01-09
    • 2015-01-25
    相关资源
    最近更新 更多