python - Python Linspace 传入函数只返回一个数字
问题描述
有两种情况,第一种,我的函数 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
...]
谢谢!
解决方案
在第一种情况下,您将返回常量10
。
在第二种情况下,您将运算符**2
应用于 np 数组,该数组重载**
并将幂运算元素逐个应用于整个数组。这种行为称为广播或矢量化算术运算。
aritmethic 方法的这种广播重载允许以下行为:
np.array([1, 2, 3, 4]) + 1
>>> array([2, 3, 4, 5])
这是您的第二个案例使用的,而您的第一个案例则没有。
例如,您可以在此处了解有关此主题的更多信息。
如果您想要一个形状为 1000 且包含 10 的数组,请改用numpy.full:
import numpy as np
y = np.full(1000, 10)
推荐阅读
- asp.net-core-webapi - 来自路由数据和请求正文的复杂类型参数绑定
- node.js - 无法从 mobx 导入装饰
- python - scipy stats zmap 函数的替代方案
- ios - SwiftUI:如何为文本字段设置背景颜色
- jquery - 如何访问 jquery 中的对象列表?
- image - 统一大小的图像 ScrollView
- python - TypeError 接受 2 个位置参数,但给出了 3 个
- python - 动态注释和过滤
- r - R - 如何绘制一个二维矩阵,其中每个 (i,j) 条目的大小是标记的大小?
- mysql - MYSQL SELECT 与 GROUP。想要限制 GROUP BY 中返回元素的数量