【问题标题】:Iterating over numpy array without for loop在没有for循环的情况下迭代numpy数组
【发布时间】:2017-03-25 21:53:07
【问题描述】:

我经常在我的代码中使用 numpy 数组。它的速度和方便的索引规则非常有用。现在,我正在寻找如何避免“for”循环以缩短执行时间。为简单起见,假设我们有两个向量(名为 a 和 b),每个向量有 10 个元素。第二个向量(b) 的第一个值等于 1,然后每个第 n 个值等于 '(b[n-1]*13+a[n])/14'。在'for'循环的帮助下,我可以像下面这样写:

import numpy as np
a = np.random.random(10)
b = np.ones(10)
for i in range(1, b.shape[0]):
    b[i] = (b[i-1]*13 + a[i]) / 14

所以,我的问题是如何在没有 for 循环的情况下更快地做同样的事情?如何使用 numpy 向量化来执行该操作?提前致谢!

【问题讨论】:

标签: arrays python-3.x numpy iteration vectorization


【解决方案1】:

几天前我在一次采访中被问到同样的问题,所以我想出了我在 java 中的实现。我使用递归来迭代数组

公共类 IterateWithoutLoop {

private int[]arr;
int size;


public IterateWithoutLoop(int[] arr) {      
    this.arr = arr;
    this.size = 0;
}


public static void main(String[] args) {
    int[]arr={1,2,3,4,5};
    int i=0;
    IterateWithoutLoop iterator=new IterateWithoutLoop(arr);
    iterator.iterateOverArray();
}
public void iterateOverArray(){
    if(arr.length!=size){

        System.out.print(arr[size++]+"\t");
        iterateOverArray();         
    }

}

}

【讨论】:

  • 虽然这对 Java 问题很有用,但您的回答在这里没有帮助,因为这个问题的 numpy 解决方案和 java 解决方案之间几乎没有相似之处。
猜你喜欢
  • 2017-05-05
  • 2012-11-28
  • 2021-01-29
  • 1970-01-01
  • 2020-02-26
  • 2021-11-18
  • 1970-01-01
  • 2019-01-07
  • 2013-03-29
相关资源
最近更新 更多