假設我有一個一維陣列dims:
dims = np.array((1,2,3,4))
我想創建一個n階正態分布張量,其中n是的大小dims和dims[i]是第i個維度的大小。
我試著做
A = np.random.randn(dims)
但這不起作用。我可以
A = np.random.randn(1,2,3,4)
這會起作用,但n可能很大并且n本身可能是隨機的。在這種情況下,如何讀取尺寸大小的陣列?
uj5u.com熱心網友回復:
使用帶星號的解包:
np.random.randn(*dims)
uj5u.com熱心網友回復:
當簽名為時,解包是標準的 Python randn(d0, d1, ..., dn)
In [174]: A = np.random.randn(*dims)
In [175]: A.shape
Out[175]: (1, 2, 3, 4)
randndocs 建議standard_normal哪個需要一個元組(或可以被視為元組的陣列):
In [176]: B = np.random.standard_normal(dims)
In [177]: B.shape
Out[177]: (1, 2, 3, 4)
事實上,檔案說新代碼應該使用這個:
In [180]: rgn = np.random.default_rng()
In [181]: rgn.randn
Traceback (most recent call last):
File "<ipython-input-181-b8e8c46209d0>", line 1, in <module>
rgn.randn
AttributeError: 'numpy.random._generator.Generator' object has no attribute 'randn'
In [182]: rgn.standard_normal(dims).shape
Out[182]: (1, 2, 3, 4)
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/354031.html
下一篇:如何根據索引獲得矩陣的下對角線?
