python - 按索引访问数组

标签 python arrays numpy indexing

我想像下面的示例代码一样访问数组,这很慢。是否可以从 i ans f_s 创建一个向量并通过该索引访问数组?

def calc(self, length):
    for i in range(int(f_s*length*6)):
        t = i / f_s  
        self.data[i] = (numpy.multiply(sinTable512[int(t*f_carrier)%512], self.Signal[int(t*f_prn)%1023]))

我想象代码看起来像这样:

def calc(self,length):
    t = numpy.arange(0, f_s*length*6, 1/f_s)
    t_sin = t * f_carrier %512
    t_sig = t * f_prn % 1023
    self.data[i] = (numpy.multiply(sinTable512[t_sin], self.Signal[t_sig]))

有没有其他方法可以做类似的事情?据我所知,矢量运算比 for 循环快得多,至少在 MatLab 中,Python 也是如此,还是有另一种方法可以加快此操作?

最佳答案

我自己找到了答案。解决方案是使用 numpy 的 take 函数。您可以将数组和索引向量传递给该函数,它将返回所需的数组。

def calc(self,length):
    t = numpy.arange(0, f_s*length*6, 1/f_s)
    t_sin = t * f_carrier %512
    t_sig = t * f_prn % 1023
    self.data = (numpy.multiply(numpy.take(sinTable512, t_sin), numpy.take(self.Signal, t_sig)))

关于python - 按索引访问数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49716504/

相关文章:

python - 具有稀疏矩阵的matshow

python - 具有转换的重复数组

javascript - 迭代数组并找到一系列数字之间的总和

Python - 双线性图像插值

python - 模块 'pandas' 没有属性 'read_csv

python - 列表中的 Numpy 掩码

python - 扩展维度 xarray

java - 为什么在尝试填充数组时,我会收到 NullPointerException?

c - 通过输入获取值并在运行时显示它们

python - Gecko驱动问题