我想创建一个元素数组。我可以使用循环来完成此操作,但我想知道是否还有另一种方法,例如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,则可以执行以下操作:

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.asanyarray的子类,也可以使用numpy.array进行调查。参见:Numpy - array vs asarray

09-30 23:56
查看更多