我有兩個x帶有 shape(n,m)和yshape 的numpy 陣列(p,)。我想總結所有可能的對x[k, i]并y[j]創建一個新的 numpy 陣列zshape (n, m*p)。
一個天真的演算法是:
import numpy as np
# some code
z = np.empty((n, m*p))
for k in range(n):
for i in range(m):
for j in range(p):
z[k, i m * j] = x[k, i] y[j]
該演算法具有多項式復雜性:O(n*m*p)
知道我正在使用 $n ~ 1e6$ 處理陣列,我正在尋找一種使用 numpy 和/或 Pandas 功能的更有效的演算法。
我做了一些研究,我找到了一個可能的解決方案: 求和所有可能對的有效方法
但它不適合我的具體問題,我的意思是我可以使用它,但它仍然不是 Pythonic,因為我會用一個回圈進行迭代(對于 n=1,該解決方案無需太多努力即可重復使用)。
uj5u.com熱心網友回復:
正如其他人在評論中所說,不是提高復雜性,而是利用矢量化和記憶體連續性:
np.add.outer(X,y).reshape(len(X), -1)
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/371797.html
下一篇:用Java從陣列中洗掉一個數字
