簡體   English   中英

如何在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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM