我在編程方面仍然很陌生,我將不勝感激有關如何解決以下問題的任何幫助:
給定一個矩陣 (3x5)
a = [1 2 3 4 5;
6 7 8 9 10;
11 12 13 14 15;]
- 我想遍歷每一行
- 對于每一行,我希望檢查每個元素
- 對于每個元素,我想存盤一個單獨的陣列,其中包含該元素和接下來的 2 個元素。
前任:
Row 1 = [1 2 3 4 5]
For element 1
return newArray = [1 2 3]
For element 2
return newArray = [2 3 4]
卡在第 3 部分。如何讓 for 回圈只檢查接下來的 2 個元素,然后繼續檢查行中的下一個元素。
uj5u.com熱心網友回復:
我嘗試解決您的要求,但我同意其他人的觀點,即您需要更多地考慮您正在嘗試做什么以及您希望您的輸出是什么樣子。您的要求聽起來不像是初學者會實際使用的東西。我不確定您要將“單獨的陣列”存盤在什么形狀中。我有以下選項可以將它們保存在向量中或a.
function nexttwo(row, i)
newarray::Vector{Any} = [row[i]]
for j=1:2
i =1
if length(row) >= i
push!(newarray, row[i])
else
push!(newarray, nothing)
end
end
return newarray
end
function collectnexttwo(a)
result_collection = []
for i in axes(a,1)
for j in axes(a,2)
row = a[i,:]
newarray = nexttwo(row, j)
push!(result_collection, newarray)
end
end
return result_collection
end
function restoreshape(v, a)
permutedims(reshape(v, reverse(size(a))))
end
julia> a = [1 2 3 4 5; 6 7 8 9 10; 11 12 13 14 15;]
3×5 Matrix{Int64}:
1 2 3 4 5
6 7 8 9 10
11 12 13 14 15
julia> result = restoreshape(collectnexttwo(a), a)
3×5 Matrix{Any}:
Any[1, 2, 3] Any[2, 3, 4] Any[3, 4, 5] Any[4, 5, nothing] Any[5, nothing, nothing]
Any[6, 7, 8] Any[7, 8, 9] Any[8, 9, 10] Any[9, 10, nothing] Any[10, nothing, nothing]
Any[11, 12, 13] Any[12, 13, 14] Any[13, 14, 15] Any[14, 15, nothing] Any[15, nothing, nothing]
uj5u.com熱心網友回復:
我認為您對要實作的目標的陳述存在一些問題。這通常會使編程任務變得更加困難。
重申你已經擁有的:
- 我想遍歷每一行
這很容易
for row = 1:size(a)[1]
...
end
- 對于每一行,我希望檢查每個元素
這就是事情開始變得松軟的地方?你所說的“檢查”是什么意思。假設您有一些名為checkElement.
- 對于每個元素,我想存盤一個單獨的陣列,其中包含該元素和接下來的 2 個元素。
你希望那個單獨的陣列存活多久?你只想保存 3 個元素嗎?或者原始的每個單元格的三個元素(即,對于 3x5 輸入,如您所示,具有 3x5x3 結果)
另外,你想對每一行的元素 4 和 5 做什么?你想為他們的“下一個”元素使用什么值?您可以使用缺失值或 NaN。或者您可以使結果不包含有問題的輸入。
如果您回答了這些問題,您可能會發現撰寫所需的代碼要容易得多。
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/322702.html
下一篇:在for回圈中不出現顫振元素
