簡體   English   中英

創建一個帶有 if 語句的函數

[英]Create a function with an if statement inside

我想用if語句編寫一個諸如f(x)的函數,並使該函數可從另一個文件訪問,或多或少就好像它是一個sin(x)函數。 此外,我想為一系列x值繪制此函數,但我不斷收到錯誤消息。 這是我的代碼:

import numpy as np
import matplotlib.pyplot as plt

fyd=450/1.15

def f(es):
    if es < 0.002:
        return fyd*es/0.002
    else:
        return fyd;


x=np.arange(0.0000,0.01,0.0001)

plt.plot(x,f(x))
plt.show()

這是我收到的錯誤消息:

ValueError: The truth value of an array with more than one element is ambiguous. Use a.any() or a.all()

表達式es < 0.002產生一個布爾數組; 測試輸入數組中的每個值,並且每個測試的結果通知輸出數組; 如果單個值小於0.002則為True ,否則為False

>>> import numpy as np
>>> fyd=450/1.15
>>> x=np.arange(0.0000,0.01,0.0001)
>>> x < 0.002
array([ True,  True,  True,  True,  True,  True,  True,  True,  True,
        True,  True,  True,  True,  True,  True,  True,  True,  True,
        True,  True, False, False, False, False, False, False, False,
       False, False, False, False, False, False, False, False, False,
       False, False, False, False, False, False, False, False, False,
       False, False, False, False, False, False, False, False, False,
       False, False, False, False, False, False, False, False, False,
       False, False, False, False, False, False, False, False, False,
       False, False, False, False, False, False, False, False, False,
       False, False, False, False, False, False, False, False, False,
       False, False, False, False, False, False, False, False, False, False], dtype=bool)

您不能在if測試中使用該數組,因為您無法明確說明這是對還是錯:

>>> bool(x < 0.002)
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
ValueError: The truth value of an array with more than one element is ambiguous. Use a.any() or a.all()

如果你使用a.any()你會得到True因為數組中至少有一個True值; a.all()會給你False因為不是所有的值都是真的:

>>> (x < 0.002).any()
True
>>> (x < 0.002).all()
False

選擇一個適合您的需求,並在if語句中使用它:

def f(es):
    if (es < 0.002).any():  # or .all()
        return fyd*es/0.002
    else:
        return fyd

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM