1

假设我有一个 (400,10) 数组x和一个 (400,10) 数组y是否可以在没有迭代的情况下将每一行的 polyfity插入到相应的行中?如果使用循环,它将类似于x for

import numpy as np

coe = np.zeros((400,3))    
for i in np.arange(y.shape[0]): 
    coe[i,:] = np.polyfit(x[i,:], y[i,:], 2) 

因为 400 行x完全不同,所以我不能只将具有相同x坐标的 np.polyfit 应用于多维数组y

4

1 回答 1

0

你试过理解吗?

coe = [tuple(np.polyfit(x[i,:], y[i,:], 2)) for i in range(400)]

  • range(400) 将值 0 到 399 发送到 i
  • 对于每个 i,您计算 x[i,:] 与 y[i,:] 的 polyfit。我相信结果是一个元组 (p, v)
  • 生成的元组列表分配给 coe

在最内层,这是一个迭代——但在 Python 3 中,此类推导针对 C 级别的性能进行了优化,因此与使用 for: 循环相比,您可能会看到这样的性能提升。

于 2017-01-22T03:44:05.323 回答