【发布时间】:2022-01-15 23:43:57
【问题描述】:
此函数适用于示例 1 中所示的单个输入,但是当我想使用数组作为输入来运行它时,它会失败(如示例 2 中所述)。我不想使用 for 循环来计算 d、l 和 b 数组的每个元素的函数。因为它很慢。我想要做的是该函数必须使用 d、l 和 b 的每个数组的第 i 个元素作为输入并计算结果并将结果作为具有相同大小 d、l 和湾。在示例 2 中,结果应该是一个 2 元素数组,即 array([17.8, 22.4])。但它并没有像我预期的那样工作。
import numpy as np
def mydef(d, l, b):
dd = 0.1
ds = np.arange(0, d+dd, dd)
return np.sum(l*ds+b)
#Example 1
print(mydef(.2, 3, 4))
print(mydef(.3, 4, 5))
#Example 2
d=np.array([.2, .3])
l=np.array([3, 4])
b=np.array([4, 5])
print(mydef(d, l, b))
示例 2 给出
ValueError:具有多个元素的数组的真值不明确。使用 a.any() 或 a.all()
【问题讨论】:
-
回溯应该显示错误在
arange中。该函数仅适用于标量。查看其文档!你有没有测试过更简单的np.arange(0, d)? -
你期望
ds是什么? -
@hpaulj 不,它不工作。这就像使用 dd 的步长对 (0, d) 范围内的函数进行积分一样。但我做不到。
-
for
d = 0.2,ds = [0, 0.1, 0.2] -
对于 0.3?对于
[.2, .3]?我认为你并没有真正做到这一点。
标签: python function numpy loops definition