可以将numpy数组插入python中的函数吗?
Posted
技术标签:
【中文标题】可以将numpy数组插入python中的函数吗?【英文标题】:Can numpy arrays be plugged into functions in python? 【发布时间】:2022-01-16 14:57:47 【问题描述】:我有一个函数(方程 2),它返回 Nf(或 N),它代表最终人口规模。现在我想用 (r=0.1, K=100, and N0=10) 模拟 100 年,并将 N 绘制为 t(年)的函数(代码的第二部分)。但是,每次我运行代码时,python 都会返回一个值错误 (The truth value of an array with more than one element is ambiguous. Use a.any() or a.all()
)。似乎我无法将数组放入方程 2,但每隔一次我尝试将我的 x 值分配为一个 numpy 数组,它每次只使用一个数组的单个值进入函数。因此,我很困惑。有谁知道如何解决这个问题?
def equation2(r,K,N0,t):
i=0
N=N0
while i<=t:
if t==0:
return N0
else:
Nf=N+(r*(1-N/K)*N)
N=Nf
i=i+1
return Nf
import numpy as np
r=0.1
K=100
N0=10
t=np.linspace(0,100,101)
N=equation2(r,K,N0,t)
plt.plot(t,N)
【问题讨论】:
如果t
是一个数组,你就不能像if t==0
这样的测试。
请写一个标题来概括您遇到的问题。有关这方面的提示,请参阅How to Ask。你可以edit。
当t
是一个数组时,您必须自己决定应该发生什么。
@hpaulj 实际上错误发生在while i<=t
不要改变问题的主题。我已经把它回滚了。如果你有新的问题,可以ask a new question,但我认为答案是matplotlib自动调整比例。我的意思是,你试过了吗?
【参考方案1】:
为什么年份应该是一个标量却是一个数组?
看起来您实际上想要将equation2
映射到t
,如下所示:
N = [equation2(r, K, N0, year) for year in t]
【讨论】:
是的!我没有意识到我可以做“for y in t”,因为 t 是一个标量(我认为这将通过一个标量进行迭代)。 @xin 标量?我的全部观点是t
不是标量
嗯。但是t
最初不是作为标量输入到函数中的吗?
@xin 哦等等,你指的是哪个t
?这很令人困惑,因为您将 shadowed 全局名称与参数名称。
我明白了。我想我在评论中的意思是原始的t
,它是函数的参数之一(这将是一个标量?),但你说的是全局名称t
,它是你的代码的一部分?在我的原始代码中,我试图说明我想模拟 100 年(所以 t=0 到 t=100)的事实,并在我的下一次尝试中将其更改为模拟 1000 年。这就是为什么我试图把它做成一个数组(我不知道你有没有注意到那部分)。以上是关于可以将numpy数组插入python中的函数吗?的主要内容,如果未能解决你的问题,请参考以下文章
numpy中的“isnotnan”功能,这可以更pythonic吗?
python使用scipy中的sparse.csr_matrix函数将numpy数组转化为稀疏矩阵(Create A Sparse Matrix)
python使用sklearn中的DictVectorizer函数将字典数据(dictionary)转化为numpy数组使用get_feature_names函数获取数组指定列位置的标签信息