我想找到有效的方法來執行以下操作:
- 我有一個已知值的向量,它將是下面提到的陣列中的第一行。
- 我想創建一個陣列。對于第一行以外的每一行,它本質上是第一行應用了具有隨機冪的冪函式。
例如,我們有一個 3x2 陣列。第一行已知:[0,1,2]。
然后對于第二行,產生一個隨機冪,設0.5,那么第二行就是:[0^0.5,1^0.5,2^0.5]。
現在對于第三行,生成一個隨機冪,讓它為 3,那么第三行是:[0^3,1^3,2^3]。
我可以用 for 回圈輕松做到這一點。但我想知道是否有任何有效的方法來對其進行矢量化(或者在沒有矢量化的情況下足夠有效)。
示例代碼:
beta=np.zeros((3,1000 1))
beta[0]=np.append(0,np.random.uniform(0,1,1000))
for i in range(1,3,1):
p=np.random.uniform(0,2)
beta[i]= beta[0]**p
非常感謝您提前提供的幫助!
uj5u.com熱心網友回復:
廣播救援:
In [2]: beta = np.array([0, 1, 2])
In [3]: lo, hi, num_rows_desired = 0, 3, 3
In [4]: exps = np.random.uniform(lo, hi, num_rows_desired)
In [5]: exps[0] = 1 # Set the first 'power' to 1
In [6]: beta ** exps[:, None]
Out[6]:
array([[0. , 1. , 2. ],
[0. , 1. , 1.41421356],
[0. , 1. , 8. ]])
您的均勻分布指數的界限在哪里,lo
以及您想要應用的指數是多少(這將導致那么多行)。hi
num_rows_desired
beta
這可能是您想要執行此操作的方式,因為beta
在記憶體中創建整個陣列是浪費的。只需為您生成初始行向量beta
并讓廣播為您完成作業。
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/487615.html
下一篇:在Python中,當在groupby([])[].transform(np.sum)中使用np.sum時,我希望NaN總和為NaN而不是零