首页 > 解决方案 > 条件 Numpy 切片并附加到另一个数组

问题描述

我在 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。

标签: pythonnumpyappendconditional-statementsslice

解决方案


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. ])

推荐阅读