我在Python工作,我有一個NumPy陣列像這樣:調整大小和拉伸NumPy的陣列
[1,5,9]
[2,7,3]
[8,4,6]
如何它延伸到類似下面?
[1,1,5,5,9,9]
[1,1,5,5,9,9]
[2,2,7,7,3,3]
[2,2,7,7,3,3]
[8,8,4,4,6,6]
[8,8,4,4,6,6]
這些只是一些示例數組,我將實際調整幾個大小的數組,而不僅僅是這些。
我是這個新手,我似乎無法將我的頭圍繞在我需要做的事情上。
我在Python工作,我有一個NumPy陣列像這樣:調整大小和拉伸NumPy的陣列
[1,5,9]
[2,7,3]
[8,4,6]
如何它延伸到類似下面?
[1,1,5,5,9,9]
[1,1,5,5,9,9]
[2,2,7,7,3,3]
[2,2,7,7,3,3]
[8,8,4,4,6,6]
[8,8,4,4,6,6]
這些只是一些示例數組,我將實際調整幾個大小的數組,而不僅僅是這些。
我是這個新手,我似乎無法將我的頭圍繞在我需要做的事情上。
@ KennyTM的答案是非常光滑,真正適用於你的情況,但作爲一種替代方案,可能提供多一點的靈活性,擴展陣列嘗試np.repeat
:
>>> a = np.array([[1, 5, 9],
[2, 7, 3],
[8, 4, 6]])
>>> np.repeat(a,2, axis=1)
array([[1, 1, 5, 5, 9, 9],
[2, 2, 7, 7, 3, 3],
[8, 8, 4, 4, 6, 6]])
所以,這實現了沿重複一軸,讓它沿多個軸(如你可能想),只是窩np.repeat
電話:
>>> np.repeat(np.repeat(a,2, axis=0), 2, axis=1)
array([[1, 1, 5, 5, 9, 9],
[1, 1, 5, 5, 9, 9],
[2, 2, 7, 7, 3, 3],
[2, 2, 7, 7, 3, 3],
[8, 8, 4, 4, 6, 6],
[8, 8, 4, 4, 6, 6]])
你也可以改變重複FO數r任何初始行或列。例如,如果你想在每一行預留的兩個重複從最後一行:
>>> np.repeat(a, [2,2,1], axis=0)
array([[1, 5, 9],
[1, 5, 9],
[2, 7, 3],
[2, 7, 3],
[8, 4, 6]])
這裏的時候,第二個參數是一個list
它規定,在行(在這種情況下,行,因爲axis=0
)重複的每一行。
>>> a = numpy.array([[1,5,9],[2,7,3],[8,4,6]])
>>> numpy.kron(a, [[1,1],[1,1]])
array([[1, 1, 5, 5, 9, 9],
[1, 1, 5, 5, 9, 9],
[2, 2, 7, 7, 3, 3],
[2, 2, 7, 7, 3, 3],
[8, 8, 4, 4, 6, 6],
[8, 8, 4, 4, 6, 6]])
萬一有人在想,這是克羅內克產品:HTTP://docs.scipy。 org/doc/numpy/reference/generated/numpy.kron.html – krawyoti 2010-11-19 17:04:48
就像這個答案一樣酷,它需要兩倍於dtlussier在我的機器上對大數組的回答中的重複方法 – 2012-12-28 01:00:38
不幸的是,numpy不允許小數步驟(據我所知)。這是一種解決方法。它並不像肯尼的解決方案聰明,但它利用傳統索引:
>>> a = numpy.array([[1,5,9],[2,7,3],[8,4,6]])
>>> step = .5
>>> xstop, ystop = a.shape
>>> x = numpy.arange(0,xstop,step).astype(int)
>>> y = numpy.arange(0,ystop,step).astype(int)
>>> mg = numpy.meshgrid(x,y)
>>> b = a[mg].T
>>> b
array([[1, 1, 5, 5, 9, 9],
[1, 1, 5, 5, 9, 9],
[2, 2, 7, 7, 3, 3],
[2, 2, 7, 7, 3, 3],
[8, 8, 4, 4, 6, 6],
[8, 8, 4, 4, 6, 6]])
(dtlussier的解決方案是更好)
https://docs.scipy。組織/ DOC/numpy的/參照/生成/ numpy.repeat.html – 2017-12-10 07:13:18