2017-02-07 2 views
0

matplotlibとpythonを使用して2つの関数func1とfunc2をプロットしようとしています。私は次のコードのValueErrorを取得し続け、何が間違っているのか分かりません。私は関連する質問を検索し、多量のものを試しましたが、何も動かないようです。Python matplotlib ValueError:複数の要素を持つ配列の真理値があいまいです

import numpy as np 
import matplotlib.pyplot as plt 

fig, ax = plt.subplots(1, 1) 
plt.xlim(0, 10) 
plt.ylim(0, 10) 
plt.xlabel('$X$') 
plt.ylabel('$Outputs$') 
plt.title('Title') 

x = np.arange(0, 10, .1) 

def func1(X): 
    output = max(3*X/7 - 3/7, 0, 12*X/35 - 3/35) 
    return output 

def func2(X): 
    output = max(3*X/7 - 3/7, 0) 
    return output 

plt.plot(x, func1(x), 'g') 
plt.plot(x , func2(x), 'b') 

plt.show() 

答えて

1

max(2,3)3 > 2ので、はっきりと3です。

しかし、我々はndarray引数を比較したとき、我々は、単一のスカラ結果を得ることはありませんが、配列:我々はそれを単一value--にboolsの配列を変換する必要がありますすることはできません

In [23]: np.array([3,1]) > np.array([1,2]) 
Out[23]: array([ True, False], dtype=bool) 

とすべてが真ではないので、少なくとも1つ、つまりFalseがあるので、Trueである必要があります。または、エラーメッセージに「複数の要素を持つ配列の真理値はあいまいです」と書かれています。これは、組み込みのmax関数が失敗したことを意味します。なぜなら、比較が真であるかどうかに分岐を試みるからです。

幸いなことに、pairwiseの最大値が必要なように見えるので、numpyには既にそれを処理する関数があります。np.maximum。あなたのコードでnp.maximumと組み込みmaxを交換することは、私を与える:

working graph

+0

これはほとんど働いていたが、現在は非常に奇妙な何かが起こっています。 maxをnp.maximumに変更しましたが、私のグラフはあなたのようには見えません。これはなぜですか?私のpycharm設定で変な何か? – user7531647

関連する問題