【问题标题】:is there a faster way to create a array of elements of an empty array without using for loops有没有更快的方法来创建一个空数组的元素数组而不使用 for 循环
【发布时间】:2020-03-07 12:08:58
【问题描述】:

我想创建一个元素数组。我可以使用循环来做到这一点,但我想知道是否有其他方法,比如 numpy 函数或在更短的时间内做到这一点。

这就是我想做的:

def no_loops(y):


   mat = []
   for i in range(5012):
       mat.append(y[i])

   fun = funcion_a(mat)

   return fun

y 数组为空。数组的元素是 scipy 将求解的方程组的解。 我想更快地更改 for 循环。

【问题讨论】:

  • y 数组为空 - 在这种情况下 y[i] 是如何工作的?看起来不像工作代码
  • 那个循环只是复制了y
  • 来自 scipy optimize 的根需要一个空数组来迭代并找到非线性方程组的解。
  • y 不存在,我想做的只是给出另一个函数中已有值的索引并解决它们。

标签: python arrays python-3.x numpy for-loop


【解决方案1】:

如果您想要一个特定大小的新数组,并且想要忽略示例代码中非常令人困惑的y,您可以执行以下操作:

def no_loops():
    # Create an array of length 5012, all elements of which are zero.
    return funcion_a(numpy.zeros(5012))

在这种情况下,您也可以使用numpy.empty,但我更喜欢numpy.zeros 的确定性。

如果要复制y中的数据,可以使用numpy.array显式复制:

def no_loops(y):
   return funcion_a(numpy.array(y[:5012]))

如果您需要支持numpy.array 的子类,也可以使用numpy.asanyarray 进行调查。见:Numpy - array vs asarray

【讨论】:

    猜你喜欢
    • 2016-09-18
    • 1970-01-01
    • 1970-01-01
    • 2020-12-05
    • 2020-07-31
    • 1970-01-01
    • 2019-07-29
    • 2020-07-25
    • 2014-09-23
    相关资源
    最近更新 更多