python - 条件 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。
解决方案
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. ])
推荐阅读
- android - CoordinatorLayout - 朝相反方向甩动会导致抖动
- python - Visual Studio Code 中的 Pylint 抱怨导入“sh”模块
- reactjs - Deconstruct props while adding props to it. - Is it possible?
- laravel - 未找到 Laravel 护照迁移
- imgur - Imgur申请注册链接无效?
- c# - “FromRoute”请求属性的驼峰式序列化
- sql - MS Access 2013 VBA - 目录路径中的句点(“.”)问题
- java - 如何扫描字符串中以逗号分隔的元素?
- css - VSCode:如何保留空行(在 scss 文件或其他文件中)?
- python - 将 Django 命令输出记录到 Apache 错误日志