可以将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&lt;=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中的函数吗?的主要内容,如果未能解决你的问题,请参考以下文章

python基础之numpy.reshape详解

numpy中的“isnotnan”功能,这可以更pythonic吗?

如何在Python中搜索Numpy数组中的数字

python使用scipy中的sparse.csr_matrix函数将numpy数组转化为稀疏矩阵(Create A Sparse Matrix)

python使用sklearn中的DictVectorizer函数将字典数据(dictionary)转化为numpy数组使用get_feature_names函数获取数组指定列位置的标签信息

python如何挑选矩阵中的不相领的列组成新的矩阵