[英]How to apply functions to a Dataframe with arrays within it, in Python?
[英]How to apply defined functions to arrays in Python?
我有兩個函數: time_reversal
反轉我的時間分量“ n”; 和time_shift
,將我的時間坐標“ n”移動為“ k”個數量。 這些是功能:
#time_reversal
def time_reversal(n):
ind = arange(n.size-1,-1,-1)
n_r=n[ind]
return n_r
# time_shift
def time_shift(n,k):
N=n.size
if k>=0:
N_ts=concatenate( (zeros(k),n[0:N-k]), 0)
else:
k=-k
N_ts=concatenate( (n[k:N],zeros(k)), 0)
return N_ts
給定等式: y[n]=y[n]+x[k]*h[nk]
我需要將此等式應用於“ h”數組。 我需要反轉“ n”並將其移位為“ k”個數量。 數組“ x”保持不變。
問題是我不知道如何將這些功能應用於我的問題。 我試圖這樣替換“ n_r”和“ N_ts”: y[n]=y[n]+x[k]*h[n_r-N_ts]
但它給了我錯誤。 編輯:程序
from numpy import*
from matplotlib.pyplot import*
x=array([2,1,-1])
h=array([1,2,1,0,1,2,1])
y=array([0,0,0,0,0,0,0,0,0])
def time_reversal(n):
ind = arange(n.size-1,-1,-1)
n_r=n[ind]
return n_r
def time_shift(n,k):
N=n.size
if k>=0:
N_ts=concatenate( (zeros(k),n[0:N-k]), 0)
else:
k=-k
N_ts=concatenate( (n[k:N],zeros(k)), 0)
return N_ts
for n in range(0,9):
for k in range(0,3):
y[n]=y[n]+x[k]*h[n_r-N_ts]
print("y = ",y)
它說由於某些原因未定義n_r和N_ts。
我不完全確定這是否是您想要的,但是有一種叫做map
函數的東西,它允許您將函數應用於數組的每個元素並返回包含結果的新數組。 例如:
def add2(n):
return n + 2
lst = [1, 2, 3]
print(list(map(add2, lst))) # convert from map object to list
結果列表為[3, 4, 5]
。
希望這可以幫助。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.