Length1数组可以转换成python标量错误吗?python

2024-10-01 09:25:44 发布

您现在位置:Python中文网/ 问答频道 /正文

from numpy import *
from pylab import *
from math import *

def LogisticMap(a,x):
    return 4.*a*x*(1.-x)

def CosineMap(a,x):
    return a*cos(x/(2.*pi))

def TentMap(a,x):
    if x>= 0 or x<0.5:
        return 2.*a*x
    if x>=0.5 or x<=1.:
        return 2.*a*(1.-x)

a = 0.98
N = 40

xaxis = arange(0.0,N,1.0)

Func = CosineMap

subplot(211)
title(str(Func.func_name) + ' at a=%g and its second iterate' %a)
ylabel('X(n+1)') # set y-axis label
plot(xaxis,Func(a,xaxis), 'g', antialiased=True)

subplot(212)
ylabel('X(n+1)') # set y-axis label
xlabel('X(n)')   # set x-axis label
plot(xaxis,Func(a,Func(a,xaxis)), 'bo', antialiased=True)

我的程序应该取三个定义函数中的任何一个并绘制它。它们都从0到N的数组xaxis中接受一个值x,然后返回该值。我想让它绘制一个xaxis与f(xaxis)的图,其中f是上述三个函数中的任何一个。logisticmap函数工作正常,但对于CosineMap,我得到错误消息“只有length-1数组可以转换成python标量”;对于TentMap,我得到错误消息“具有多个元素的数组的真值不明确,请使用a.any()或a.all()”。如果0<;=x<;0.5,tent map函数将返回2*a*x;如果0.5<;=0<;=1,则返回2*a*(1-x)。在


Tags: 函数fromimportltreturnifdef数组
1条回答
网友
1楼 · 发布于 2024-10-01 09:25:44

首先导入numpy.cos,然后导入math.cos。后者遮蔽了前者,并且不知道如何处理NumPy数组。因此出现了错误。在

要修复,请尝试:

import numpy

def CosineMap(a,x):
    return a*numpy.cos(x/(2.*pi))

这类问题是避免from X import *样式导入的一个很好的理由。在

对于TentMap,以下是一种正确矢量化的方法:

^{pr2}$

相关问题 更多 >