我对编程很陌生,我无法弄清楚如何在P**2
等函数中操作Numpy数组。
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值最接近此输入,即bracket1
。 bracket2
是第二个最接近的y值。我很乐意帮忙!
答案 0 :(得分:1)
for ((GPCount=0; GPCount< $GPCnt; GPCount++))
do
G=${GPArr[$GPCount]}
G="$(sed -n '2p' $file.txt|cut -d" " -f7)"
printf "%d\n" "$G" >>$out.txt
done
是一维数组的列表,因此span_y
不能按预期工作并返回一个函数。之后min
引发异常。 span_y.index(bracket1)
应该像这样初始化
span_y
将span_y = list(example)
中的键函数(lambda)作为命名参数传递给in documention。
min
答案 1 :(得分:1)
在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)