首页 > 解决方案 > 如何将定义的函数应用于 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[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 。

标签: pythonarraysfunction

解决方案


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

希望这可以帮助。


推荐阅读