当前位置: 首页 > 知识库问答 >
问题:

有没有一种更快的方法来创建一个空数组的元素数组,而不使用for循环

郭皓
2023-03-14

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

这就是我想做的:

def no_loops(y):


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

   fun = funcion_a(mat)

   return fun

y数组是空的。数组的元素是一个方程组的解,spse y将求解。我想把for循环改成更快的。

共有1个答案

许明朗
2023-03-14

如果您想要一个特定大小的新数组,并且想要忽略示例代码中非常混乱的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显式复制。数组

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

您还可以使用numpy进行调查。asanyarray如果需要支持numpy的子类。数组。请参阅:Numpy-阵列与asarray

 类似资料:
  • 问题内容: 我想创建一个包含ArrayList 元素的数组。 我试过了 但这似乎不起作用。 问题答案: 您不能创建通用类型的数组。 相反,您可以创建一个。

  • 创建一组元素,根据原始数组中的位置进行分组。 使用 Math.max.apply() 获取参数中最长的数组。 创建一个长度为返回值的数组,并使用 Array.from() 和 map-function 来创建一个分组元素数组。 如果参数数组的长度不同,则在未找到值的情况下使用 undefined 。 const zip = (...arrays) => { const maxLength =

  • 我想使用以下循环创建一个新列。表中只有“open”和“start”列。我想创建一个新列“startopen”,如果“start”等于1,那么“startopen”等于“open”。否则,“startopen”等于此新创建列上方行中的任何“startopen”。目前,我能够通过以下方式实现这一点: 这有效,但对于大型数据集来说非常慢。是否有任何内置函数可以更快地完成此操作?

  • 我如何比较用户输入的这些数组呢?

  • 问题内容: 我刚刚发现了Swift 函数。似乎很有用。 它需要2个输入数组,并从每个数组的值对中创建一个元组数组。 是否有zip的变体,可以接受任意数量的数组并输出具有相同数量元素的元组?似乎应该有一种方法可以做到这一点。 问题答案: 不,由于Swift缺乏可变参数泛型,因此目前无法实现任意数量的序列。泛型宣言中对此进行了讨论。 同时,我编写了一个模板来生成自定义Arity的ZipSequence

  • 问题内容: 假设我们有这个流 我想在地图中保存几对相邻的字符串,其中第一个以“ err”开头。 我想到的就是这样 但是我对它并不完全满意,主要有两个原因 我在“滥用” 功能。在Stream API中,每个函数都有其明确的定义明确的目的:应该计算最大值,应该根据条件进行过滤,应该产生递增的累加值,依此类推。 这样做会使我无法使用Streams强大的机制:如果我想将搜索范围限制在前两个结果中,该怎么办