如何在Python中将定义的函数应用于数组?

时间:2018-10-05 20:45:38

标签: python arrays function

我有两个功能: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[n-k] 我需要将此等式应用于“ 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。

1 个答案:

答案 0 :(得分:0)

我不能完全确定这是否是您想要的,但是有一种叫做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]

希望这会有所帮助。