Python–ValueError:包含多个元素的数组的真值不明确。使用a.any()或a.all()

2024-09-29 01:37:59 发布

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

我对编程很陌生,我不知道如何使用Numpy数组在函数中进行操作,比如P**2。在

import math
import numpy
span_x = numpy.array([0,250,500,750,1000])
P = span_x
example = P**2
span_y = [example for i in P]
y = float(input("Enter y: "))
bracket1 = min(span_y, lambda span_y: abs(span_y-y))
if bracket1 < y:
    for i in span_y:
        bracket2 = span_y[span_y.index(bracket1) + 1]
else:
    for i in span_y:
        bracket2 = span_y[span_y.index(bracket1) - 1]
print "Brackets: ", bracket1, bracket2

我尝试不使用Numpy数组,但收到了一个TypeError。在

我的主要问题是我有一个x值数组(span_x),我想把它放入一个类似P**2的函数中,然后在数组中得到y值(span_y)。然后,用户输入一个y值,我要检查span_y中哪个y值最接近这个输入,那就是bracket1bracket2是第二个最近的y值。我很乐意帮忙!在


Tags: 函数inimportnumpyforindexexample编程
2条回答

在NumPy中,您可以而且应该将操作矢量化,例如:

span_y = span_x**2
y = float(input("Enter y: "))
bracket1 = np.array((span_y, np.abs(span_y - y))).min(axis=0)
bracket2 = np.zeros_like(bracket1)
bracket2[ bracket1 < y ] = np.roll(span_y, 1)
bracket2[ bracket1 >= y] = np.roll(span_y, -1)

span_y是1D数组的列表,因此min无法按预期工作并返回函数。之后,span_y.index(bracket1)引发一个异常。span_y应该这样初始化

span_y = list(example)

min中的键函数(lambda)作为指定参数传递给in documention。在

^{pr2}$

相关问题 更多 >