[英]Repeat values an a 1D NumPy array “N” times
我有以下數組:
[9.975 9.976 9.977 9.978 9.979 9.98 9.981 9.982 9.983 9.984 9.985 9.986
9.987 9.988 9.989 9.99 9.991 9.992 9.993 9.994]
現在,我想將這些值復制到同一行的n列中。 結果應如下所示:
[[9.975 9.975 9.975],
[9.976 9.976 9.976],
.....
[9.994 9.994 9.994]]
你知道這怎么可能嗎?
提前致謝。
由於您使用的是numpy,請使用np.repeat
+ np.reshape
:
>>> np.repeat(arr, 3).reshape(-1, 3)
array([[9.975, 9.975, 9.975],
[9.976, 9.976, 9.976],
[9.977, 9.977, 9.977],
[9.978, 9.978, 9.978],
[9.979, 9.979, 9.979],
[9.98 , 9.98 , 9.98 ],
[9.981, 9.981, 9.981],
[9.982, 9.982, 9.982],
[9.983, 9.983, 9.983],
[9.984, 9.984, 9.984],
[9.985, 9.985, 9.985],
[9.986, 9.986, 9.986],
[9.987, 9.987, 9.987],
[9.988, 9.988, 9.988],
[9.989, 9.989, 9.989],
[9.99 , 9.99 , 9.99 ],
[9.991, 9.991, 9.991],
[9.992, 9.992, 9.992],
[9.993, 9.993, 9.993],
[9.994, 9.994, 9.994]])
嘗試這個:
a = [ 9.975, 9.976, 9.977, 9.978, 9.979, 9.98, 9.981,
9.982, 9.983, 9.984, 9.985, 9.986, 9.987, 9.988,
9.989, 9.99, 9.991, 9.992, 9.993, 9.994 ]
n = 3
print([[x] * n for x in a])
我從您的示例輸出中得出此答案。 您的措詞並沒有明確說明您想要什么。
如果您使用的是numpy
,那么我建議采用以下解決方案:
a = np.array([ 9.975, 9.976, 9.977, 9.978, 9.979, 9.98, 9.981,
9.982, 9.983, 9.984, 9.985, 9.986, 9.987, 9.988,
9.989, 9.99, 9.991, 9.992, 9.993, 9.994 ])
print(np.array([ a ] * 3).transpose())
使用for循環
lst = [9.975, 9.976, 9.977, 9.978, 9.979, 9.98, 9.981, 9.982, 9.983, 9.984, 9.985, 9.986, 9.987, 9.988, 9.989, 9.99, 9.991, 9.992, 9.993, 9.994]
rslt = []
n = 3
for i in lst:
rslt.append([i for j in range(n)])
編輯:使它變得更pythonic,雖然可讀性稍差:
lst = [9.975, 9.976, 9.977, 9.978, 9.979, 9.98, 9.981, 9.982, 9.983, 9.984, 9.985, 9.986, 9.987, 9.988, 9.989, 9.99, 9.991, 9.992, 9.993, 9.994]
n = 3
rslt = [[i for j in range(n)] for i in lst]
我們可以運行for循環並將數字存儲到空列表中。 然后,我們可以獲取該空列表,然后將其轉換為數組,以獲取所需的輸出。 這是一個例子:
import numpy as np
array = np.array([9.975, 9.976, 9.977, 9.978, 9.979, 9.98, 9.981, 9.982, 9.983, 9.984, 9.985, 9.986,
9.987, 9.988, 9.989, 9.99, 9.991, 9.992, 9.993, 9.994])
empty_list = []
for number in array:
num1 = float(number)
num2 = float(number)
num3 = float(number)
empty_list.append(num1)
empty_list.append(num2)
empty_list.append(num3)
array = np.array(empty_list).reshape(20, 3)
print(array)
這是您的輸出:
[[ 9.975 9.975 9.975]
[ 9.976 9.976 9.976]
[ 9.977 9.977 9.977]
[ 9.978 9.978 9.978]
[ 9.979 9.979 9.979]
[ 9.98 9.98 9.98 ]
[ 9.981 9.981 9.981]
[ 9.982 9.982 9.982]
[ 9.983 9.983 9.983]
[ 9.984 9.984 9.984]
[ 9.985 9.985 9.985]
[ 9.986 9.986 9.986]
[ 9.987 9.987 9.987]
[ 9.988 9.988 9.988]
[ 9.989 9.989 9.989]
[ 9.99 9.99 9.99 ]
[ 9.991 9.991 9.991]
[ 9.992 9.992 9.992]
[ 9.993 9.993 9.993]
[ 9.994 9.994 9.994]]
簡而言之,我們僅對每個數字運行一個for循環,將其存儲三遍到空列表中,創建一個數組,對其進行整形,然后獲得您要查找的輸出。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.