我有以下內容,array并且repeat每次都想要array n。
x_array
[array([14.91488012, 1.2986064 , 4.98965322]),
array([2.39389187e 02, 1.04442059e-01, 3.06391338e-01]),
array([ 48.19437348, 201.09951372, 0.35223001]),
array([ 19.96978171, 367.52578786, 0.68676553]),
array([0.55120466, 0.27133609, 0.75646697]),
array([8.21287360e 02, 1.76495077e 02, 4.87263691e-01]),
array([184.03439377, 1.24823107, 5.33109884]),
array([575.59800297, 186.4650814 , 2.21028258]),
array([0.50308552, 3.09976082, 0.10537899]),
array([1.02259912e 00, 1.52282513e 02, 1.15085308e-01])]
我試過,np.repeat(x_array, 2)但這不會保留matrix/的順序array。我也試過x_array*2,但這似乎只是將新陣列放在底部。我希望重復x_array[0] n次數并為下一組做同樣的事情arrays,以便我n按順序排列每個。
提前致謝。
uj5u.com熱心網友回復:
基于https://numpy.org/doc/stable/reference/generated/numpy.repeat.html的最后一個示例,
x_array = np.array(x_array) # Or a similiar operation to convert x_array to an ndarray vs. a list of arrays.
expanded_x_array = np.repeat(x_array, n, axis=0)
print(expanded_x_array)
應該產生你正在尋找的東西。
uj5u.com熱心網友回復:
您只需要指定軸:
>>> np.repeat(x_array, 2, axis=0)
array([[1.49149e 01, 1.29861e 00, 4.98965e 00],
[1.49149e 01, 1.29861e 00, 4.98965e 00],
[2.39389e 02, 1.04442e-01, 3.06391e-01],
[2.39389e 02, 1.04442e-01, 3.06391e-01],
...,
[5.03086e-01, 3.09976e 00, 1.05379e-01],
[5.03086e-01, 3.09976e 00, 1.05379e-01],
[1.02260e 00, 1.52283e 02, 1.15085e-01],
[1.02260e 00, 1.52283e 02, 1.15085e-01]])
從檔案:
numpy.repeat(a, repeats, axis=None)...
axis int,可選
沿其重復值的軸。默認情況下,使用扁平化的輸入陣列,并回傳一個扁平的輸出陣列。
(加粗)
uj5u.com熱心網友回復:
您可以使用串列理解:
n = 2
repeated_list = [row for row in a for _ in range(n)]
print(repeated_list)
uj5u.com熱心網友回復:
你的術語令人困惑。你說它是一個“陣列”,但顯示看起來更像是一個串列,并且x_array*2在底部放置一個“新陣列”的事實證實了這一點 - 這是*.
np.repeat(x_array) 首先創建一個陣列(一個真實的!)
np.array(x_array)
是一個 (n,3) 浮點型陣列。沒有展axis np.repeat平 - 正如記錄的那樣!
指定axis=0作品是因為它在第一個n維度上重復。結果是一個 (2*n,3) 浮點型陣列(不是串列)。
可以制作包含這些陣列的一維物件 dtype 陣列。這樣repeat可以在沒有軸引數的情況下作業。
了解您擁有什么,并準確地描述它,可以使此類任務變得更容易 - 并且問題更清晰。
插圖
制作一個陣列串列:
In [21]: alist = [np.ones(3,int),np.zeros(3,int),np.arange(3)]
In [22]: alist
Out[22]: [array([1, 1, 1]), array([0, 0, 0]), array([0, 1, 2])]
串列重復:
In [23]: alist*2
Out[23]:
[array([1, 1, 1]),
array([0, 0, 0]),
array([0, 1, 2]),
array([1, 1, 1]),
array([0, 0, 0]),
array([0, 1, 2])]
從串列中創建一個二維陣列:
In [24]: np.array(alist)
Out[24]:
array([[1, 1, 1],
[0, 0, 0],
[0, 1, 2]])
沒有軸的重復以扁平的方式重復元素:
In [25]: np.repeat(alist,2)
Out[25]: array([1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 2, 2])
在 0 軸上重復這個二維陣列:
In [26]: np.repeat(alist,2,axis=0)
Out[26]:
array([[1, 1, 1],
[1, 1, 1],
[0, 0, 0],
[0, 0, 0],
[0, 1, 2],
[0, 1, 2]])
串列中的物件資料型別陣列:
In [27]: arr = np.empty(3,object); arr[:]=alist
In [28]: arr
Out[28]: array([array([1, 1, 1]), array([0, 0, 0]), array([0, 1, 2])], dtype=object)
由于陣列具有相同的大小,我們必須使用這種特殊結構。否則我們得到二維陣列 [24]。
這個陣列有一個repeat方法,只有一維我們不需要指定軸。它在重復物件元素、陣列,而不是 2d [24] 陣列中的數字。
In [29]: arr.repeat(2)
Out[29]:
array([array([1, 1, 1]), array([1, 1, 1]), array([0, 0, 0]),
array([0, 0, 0]), array([0, 1, 2]), array([0, 1, 2])], dtype=object)
轉載請註明出處,本文鏈接:https://www.uj5u.com/qianduan/402815.html
標籤:
