2016-02-11 88 views
-3

image創建特殊矩陣的Python/numpy的

您好,我是新來的Python,我需要創建一個非常特殊的基質(見上文)。它只是每行重複7個不同的值,然後在該行的末尾加上零。在每行之後填充兩個零並重復該數組。當數組到達結尾時,它將從開始直到h0(2)位於索引[x,0]處。之後,另一個h以相同的方式啓動 我認爲最樸素的方式是使用嵌套和循環與計數器和休息。

在這篇文章中,一個類似的問題已經被問到: Creating a special matrix in numpy 但它不完全是我所需要的。

有沒有更聰明的方法來創建這個而不是像上一篇文章中的嵌套循環,或者甚至有這種矩陣的函數/名稱?

+0

歡迎來到StackOverflow。請以最小的形式將代碼添加到您的問題中。外部鏈接可能會下降,然後你的問題不會幫助任何後來的訪問者。還請閱讀正確的問題應該包含什麼:[MCVE](http://stackoverflow.com/help/mcve) – MSeifert

+0

我假設第二行中的第二個'h_0(0)'應該是'h_0(1)'? – Evert

+0

結束標準有點模糊(它似乎依賴於行數,而不是h_x()是否已完成「其循環」),但是我只是創建了一個帶有double for循環的1D列表:最實用和直接的方式。爲了提高效率,你可以將其包裝在列表理解中。一旦列表出現,將它變成一個numpy數組,並將其重新塑造成N/3 N。 – Evert

回答

0

我會專注於重複模式,並嘗試從塊構建數組。

例如我看到3組行,與h_0,h_1h_2元素。

在每一個我看到一個Hs = [h(0)...h(6)]序列重複。

它幾乎看起來像你可以連接[Hs, zeros(n), Hs, zeros(n),...]在一個長1d陣列,並重塑它到(a,b)行。

或者您可以創建A = np.zeros((a,b))數組,並重復將Hs插入正確的位置。如果Hs環繞下一行,則使用A.flat[x:y]=Hs。換句話說,即使A是2d,也可以插入Hs值,就像它是1d(其數據緩衝區爲真)一樣。

你的例子太複雜了,不能在短時間內給你一個確切的答案 - 而且我的注意力還不夠詳細。但這可能會給你一些想法。尋找重複的模式和slices