我正在用x数组计算任意表达式,例如3*x**2+4。这通常会产生一个x形状的数组。但是,如果表达式只是一个常量,则返回标量。在不明确检查形状的情况下,确保它具有x形状的最佳方法是什么?乘以numpy.one(x.shape)是可行的,但我认为这需要不必要的计算。
编辑: 为了清楚起见,我不仅仅希望它是一个1号数组,我希望它的形状和大小与X相同。 我正在使用NumExpr计算字符串,它可以包含x的任意函数:
x = numpy.linspace(min, max, num)
y = numexpr.evaluate(expr, {'x': x}, {})
我想得到一个y值数组,可以通过matplotlib对x进行绘制。目前我正在做这件事,效果很好:
y = numpy.ones(x.size) * y
但我担心这会浪费大尺寸的衣服。有更好的办法吗?
您可以使用整形:
np.reshape(x, (1,1))
下面是演示:
当我不确定x是标量、列表/元组还是数组时,我一直在使用:
或者,通过(ab)使用广播规则,您可以同样地编写:
也许一个稍微简化一点的语法是使用数组构造函数上的额外参数:
这将确保数组至少有一个维度。
但这是一件看起来有点笨拙的事情
见atleast_1d:
相关问题 更多 >
编程相关推荐