有两种情况,第一种,我的函数Y1总是返回相同的数字。在那种情况下,它不起作用,y等于10的整数而不是一千个10的数组。第二种情况是,它返回差值数字,它可以工作!
第一种情况(无法正常工作)
def Y1(x, N):
return 10
x= np.linspace(-2,2,1000)
y= Y1(x,0) #In that case, it should create a array with 1000 numbers, but it only return one int, 10.
y value: 10 #when it should be [10 10 10 10 10 10...]
其他情况(按预期方式工作)
def Y1(x, N):
return x**2
x= np.linspace(-2,2,1000)
y= Y1(x,0) #it returns a array, all numbers are differents
y value:
[4.00000000e+00 3.98400002e+00 3.96803210e+00 3.95209624e+00
3.93619245e+00 3.92032072e+00 3.90448106e+00 3.88867346e+00
3.87289792e+00 3.85715445e+00 3.84144304e+00 3.82576370e+00
3.81011642e+00 3.79450121e+00 3.77891806e+00 3.76336697e+00
...]
谢谢!
答案 0 :(得分:1)
在第一种情况下,您将返回常量10
。
在第二种情况下,您将运算符**2
应用于np数组,该数组使**
重载并将幂运算逐个元素地应用于整个数组。这种行为被称为广播或矢量化的方法。
这种广播的超负荷方法允许以下行为:
np.array([1, 2, 3, 4]) + 1
>>> array([2, 3, 4, 5])
第二种情况使用的是哪种,而第一种情况没有的。
您可以了解有关此主题的更多信息,例如here。
如果您想要一个形状为1000的10个完整数组,请使用numpy.full:
import numpy as np
y = np.full(1000, 10)