gpt4 book ai didi

python - Numpy 将标量转换为数组

转载 作者:太空狗 更新时间:2023-10-29 20:10:48 24 4
gpt4 key购买 nike

我根据 x 数组计算任意表达式,例如 3*x**2 + 4。这通常会产生一个具有 x 形状的数组。但是,如果表达式只是一个常量,它会返回一个标量。在不显式检查形状的情况下确保它具有 x 形状的最佳方法是什么?乘以 numpy.ones(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

但我担心这对于大尺寸来说是一种浪费。有没有更好的办法?

最佳答案

参见 atleast_1d :

Convert inputs to arrays with at least one dimension.

>>> import numpy as np
>>> x = 42 # x is a scalar
>>> np.atleast_1d(x)
array([42])

>>> x_is_array = np.array(42) # A zero dim array
>>> np.atleast_1d(x_is_array)
array([42])

>>> x_is_another_array = np.array([42]) # A 1d array
>>> np.atleast_1d(x_is_another_array)
array([42])

>>> np.atleast_1d(np.ones((3, 3))) # Any other numpy array
array([[ 1., 1., 1.],
[ 1., 1., 1.],
[ 1., 1., 1.]])

关于python - Numpy 将标量转换为数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30385151/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com