我经常在代码中使用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
所以,我的问题是如何在没有循环和更快的情况下做同样的事情?如何使用numpy矢量化来执行该操作?提前谢谢!
答案 0 :(得分:-2)
几天前我在一次采访中被问到同样的问题,所以我想出了我在java中的实现。我使用递归迭代一个数组
public class 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();
}
}
}