[英]How to give unique integer id starting from 0 to random given number?
[英]How to generate a number of random vectors starting from a given one
我有一個值數組,並希望從中創建一個矩陣,其中每一行是我的起點向量乘以(正態)分布的樣本。 然后,此矩陣的行數將根據我想要的樣本數而變化。
%pylab
my_vec = array([1,2,3])
my_rand_vec = my_vec*randn(100)
最后一個命令不起作用,因為數組形狀不匹配。 我可以考慮使用for
循環,但是我試圖利用數組操作。
它是向量的外積:
my_rand_vec = numpy.outer(randn(100), my_vec)
嘗試這個
my_rand_vec = my_vec[None,:]*randn(100)[:,None]
對於小數字,例如
import numpy as np
my_vec = np.array([1,2,3])
my_rand_vec = my_vec[None,:]*np.random.randn(5)[:,None]
my_rand_vec
# array([[ 0.45422416, 0.90844831, 1.36267247],
# [-0.80639766, -1.61279531, -2.41919297],
# [ 0.34203295, 0.6840659 , 1.02609885],
# [-0.55246431, -1.10492863, -1.65739294],
# [-0.83023829, -1.66047658, -2.49071486]])
您的解決方案my_vec*rand(100)
不起作用,因為*
對應於逐元素乘法,僅當兩個數組具有相同形狀時才起作用。
您要做的是使用[None,:]
和[:,None]
添加一個附加維度[:,None]
以便numpy的廣播有效。
另外,我建議不要使用pylab
。 而是使用import as
來包含此處指出的模塊。
您可以將所需數組的尺寸傳遞給numpy.random.randn
:
my_rand_vec = my_vec*np.random.randn(100,3)
要將每個向量乘以相同的隨機數,您需要添加一個額外的軸:
my_rand_vec = my_vec*np.random.randn(100)[:,np.newaxis]
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.