[英]Python3: How can I fill a 5x5 ones matrix with a one dimension array?
我有一個 5x5 個矩陣:
[[1. 1. 1. 1. 1.]
[1. 1. 1. 1. 1.]
[1. 1. 1. 1. 1.]
[1. 1. 1. 1. 1.]
[1. 1. 1. 1. 1.]]
我想用這個一維數組填充它:
[0.72222515 1.25003225 0.11767353 0.16121767 0.27926356 0.78412963
0.08371721 1.77536532 1.67636045 0.55364691]
喜歡:
[[0.72222515 1.25003225 0.11767353 0.16121767 0.27926356]
[0.78412963 0.08371721 1.77536532 1.67636045 0.55364691]
[[0.72222515 1.25003225 0.11767353 0.16121767 0.27926356]
[0.78412963 0.08371721 1.77536532 1.67636045 0.55364691]
[[0.72222515 1.25003225 0.11767353 0.16121767 0.27926356]
我可以在 python 中做什么?
我們可以創建一個具有所需布局的新數組,而不是填充現有數組。
In [129]: arr = np.arange(10)
repeat
是制作多個副本的快速方法。 由於您一次“填充”兩行,讓我們將重復應用於 1d 數組 - 擴展為 2d:
In [132]: arr[None,:].repeat(3,0)
Out[132]:
array([[0, 1, 2, 3, 4, 5, 6, 7, 8, 9],
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9],
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]])
然后重塑為所需的形狀:
In [133]: arr[None,:].repeat(3,0).reshape(6,5)
Out[133]:
array([[0, 1, 2, 3, 4],
[5, 6, 7, 8, 9],
[0, 1, 2, 3, 4],
[5, 6, 7, 8, 9],
[0, 1, 2, 3, 4],
[5, 6, 7, 8, 9]])
並使用切片去除多余的行:
In [134]: arr[None,:].repeat(3,0).reshape(6,5)[:5,:]
Out[134]:
array([[0, 1, 2, 3, 4],
[5, 6, 7, 8, 9],
[0, 1, 2, 3, 4],
[5, 6, 7, 8, 9],
[0, 1, 2, 3, 4]])
即使我們ones
填充路線,使用 10 列最簡單:
In [135]: new = np.ones((3,10)); new[:] = arr
In [136]: new
Out[136]:
array([[0., 1., 2., 3., 4., 5., 6., 7., 8., 9.],
[0., 1., 2., 3., 4., 5., 6., 7., 8., 9.],
[0., 1., 2., 3., 4., 5., 6., 7., 8., 9.]])
In [137]: new.reshape(-1,5)[:5,:]
Out[137]:
array([[0., 1., 2., 3., 4.],
[5., 6., 7., 8., 9.],
[0., 1., 2., 3., 4.],
[5., 6., 7., 8., 9.],
[0., 1., 2., 3., 4.]])
可能我們可以通過循環來做到這一點,就像這樣......不確定這是否是最好的方式......
import numpy as np
arr1 = np.ones((5,5))
arr2 = np.array([1,2,3,4,5,6,7,8,9,10])
arr2 = np.reshape(arr2, (-1, 5))
for i in range(0,len(arr1)):
if i % 2 == 0:
arr1[i] = arr2[0]
else:
arr1[i] = arr2[1]
# Output of arr1
array([[ 1., 2., 3., 4., 5.],
[ 6., 7., 8., 9., 10.],
[ 1., 2., 3., 4., 5.],
[ 6., 7., 8., 9., 10.],
[ 1., 2., 3., 4., 5.]])
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.