python - 如何将定义的函数应用于 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 。
解决方案
我不完全确定这是否是您想要的,但是有一种叫做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]
。
希望这可以帮助。
推荐阅读
- javascript - 赛普拉斯从窗口获取全局变量
- spyder - 启动内核时发生错误(anaconda 中的 spyder)
- python - 如何在Python中找到两个等高线图的多个交点
- java - AuthenticationManager 在我的自定义过滤器中为空
- python - 打开文件夹中的所有excel文件并记录值
- javascript - chrome 扩展获取 cookie 不会返回所有 cookie
- android - Flutter SetState 不更新文本
- python - 如何使用 datestr2num 而不是 strpdate2num
- web-scraping - 抓取的源代码不完整 - 加载错误
- inheritance - 如果类被继承,则使用自定义设置器