如何创建一个将延迟应用于 python 中的 numpy 数组的函数?

问题描述 投票:0回答:1

这里有 3 个带有一些数字的 numpy 数组:

import numpy as np

arr_a = np.array([[0.1, 0.2, 0.3, 0.4],
                  [0.2, 0.3, 0.4, 0.5],
                  [0.3, 0.4, 0.5, 0.6],
                  [0.4, 0.5, 0.6, 0.7],
                  [0.5, 0.6, 0.7, 0.8],
                  [0.6, 0.7, 0.8, 0.9]])

arr_b = np.array([[0.15, 0.25, 0.35, 0.45],
                  [0.35, 0.45, 0.55, 0.65],
                  [0.55, 0.65, 0.75, 0.85],
                  [0.75, 0.85, 0.95, 1.05],
                  [0.95, 1.05, 1.15, 1.25],
                  [1.15, 1.25, 1.35, 1.45]])

arr_c = np.array([[0.3, 0.6, 0.9, 1.2],
                  [0.6, 0.9, 1.2, 1.5],
                  [0.9, 1.2, 1.5, 1.8],
                  [1.2, 1.5, 1.8, 2.1],
                  [1.5, 1.8, 2.1, 2.4],
                  [1.8, 2.1, 2.4, 2.7]])

每个数组的形状都是(6, 4)。其中 rows=person 和 columns=time(seconds),考虑每一行代表一个独特的人,每一列代表在那个特定时刻与那个人相关的加速度。

我想创建一个名为

calc_acc_change
的函数,它根据给定的滞后值计算加速度的变化。我希望这个函数接受一个数组和一个滞后值(默认值=2),它满足以下公式:
acc_change(t) = acc(t) - acc(t- lag)
,其中 t=time。我希望输出保留一个数组。

我已经开始我的功能如下,但我不知道如何完成它:

def calc_acc_change(array, lag=2):
   ...
   return acc_change

要测试函数是否正常工作,请在函数中输入

arr_a
arr_b
arr_c
并打印输出。

非常感谢任何帮助:)

python arrays numpy function lag
1个回答
2
投票

根据给定的延迟对输入数组进行切片,然后减去切片数组。

import numpy as np

def calc_acc_change(array, lag=2):
    acc_change = np.zeros_like(array)
    acc_change[:, lag:] = array[:, lag:] - array[:, :-lag]
    return acc_change

arr_a = np.array([[0.1, 0.2, 0.3, 0.4],
                  [0.2, 0.3, 0.4, 0.5],
                  [0.3, 0.4, 0.5, 0.6],
                  [0.4, 0.5, 0.6, 0.7],
                  [0.5, 0.6, 0.7, 0.8],
                  [0.6, 0.7, 0.8, 0.9]])

arr_b = np.array([[0.15, 0.25, 0.35, 0.45],
                  [0.35, 0.45, 0.55, 0.65],
                  [0.55, 0.65, 0.75, 0.85],
                  [0.75, 0.85, 0.95, 1.05],
                  [0.95, 1.05, 1.15, 1.25],
                  [1.15, 1.25, 1.35, 1.45]])

arr_c = np.array([[0.3, 0.6, 0.9, 1.2],
                  [0.6, 0.9, 1.2, 1.5],
                  [0.9, 1.2, 1.5, 1.8],
                  [1.2, 1.5, 1.8, 2.1],
                  [1.5, 1.8, 2.1, 2.4],
                  [1.8, 2.1, 2.4, 2.7]])

print("Array A:\n", calc_acc_change(arr_a))
print("Array B:\n", calc_acc_change(arr_b))
print("Array C:\n", calc_acc_change(arr_c))
© www.soinside.com 2019 - 2024. All rights reserved.