我有一個包含這樣資料的陣列
a = [[1,2,3],[4,5,6],[7,8,9]]
我想把它改成
b = [[1,1,2,2,3,3],[1,1,2,2,3,3],[4,4,5,5,6,6],[4,4,5,5,6,6],[7,7,8,8,9,9],[7,7,8,8,9,9]]
我嘗試使用numpy.resize()函式,但在調整大小后,它給出了[[1,2,3,4],[1,2,3,4],[1,2,3,4],[1,2,3,4]]. 我可以使用 for 回圈將數字放在我需要的索引處,但只是想知道是否有更簡單的方法可以做到這一點?
為了可視化任務,這里是原始陣列

這就是我要的

uj5u.com熱心網友回復:
我最初的想法是這樣np.tile會起作用,但實際上您正在尋找的是np.repeat在兩個不同的軸上兩次。
試試這個可運行的例子!
#!/usr/bin/env python
import numpy as np
a = [[1,2,3],[4,5,6],[7,8,9]]
b = np.repeat(np.repeat(a, 2, axis=1), 2, axis=0)
b
<script src="https://modularizer.github.io/pyprez/pyprez.min.js"></script>
uj5u.com熱心網友回復:
您可以將您的問題視為將每個 1x1 塊的大小調整為 2x2 塊。這可以簡單地使用 來完成numpy.kron(a, b),它對每個 1x1 塊的每個元素進行操作,a并根據它“擴展”它,b因此應該是一個 2x2 塊。
>>> import numpy as np
>>> a = np.array([[1,2,3],[4,5,6],[7,8,9]])
>>> np.kron(a, [[1, 1], [1, 1]])
array([[1, 1, 2, 2, 3, 3],
[1, 1, 2, 2, 3, 3],
[4, 4, 5, 5, 6, 6],
[4, 4, 5, 5, 6, 6],
[7, 7, 8, 8, 9, 9],
[7, 7, 8, 8, 9, 9]])
為更大的結構創建第二個運算元的一種有效方法是使用np.ones和相關的函式。
>>> np.kron(a, np.ones((2,4), dtype=int))
array([[1, 1, 1, 1, 2, 2, 2, 2, 3, 3, 3, 3],
[1, 1, 1, 1, 2, 2, 2, 2, 3, 3, 3, 3],
[4, 4, 4, 4, 5, 5, 5, 5, 6, 6, 6, 6],
[4, 4, 4, 4, 5, 5, 5, 5, 6, 6, 6, 6],
[7, 7, 7, 7, 8, 8, 8, 8, 9, 9, 9, 9],
[7, 7, 7, 7, 8, 8, 8, 8, 9, 9, 9, 9]])
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/519638.html
