2017-09-04 74 views
1

我想墊與如下所示的恆定值的陣列(實際上是一個三維陣列,但爲了簡潔我在這裏展示一個2D示例):如何在不填充角落的情況下填充一個numpy數組?

[[1,1,1], 
[1,1,1], 
[1,1,1]] 

應該成爲

[[0,1,1,1,0], 
[1,1,1,1,1], 
[1,1,1,1,1], 
[1,1,1,1,1], 
[0,1,1,1,0]] 

現在numpy.pad將填滿角落(並且在3D中也是邊緣),這不是我想要的。我可以將它們設置爲「手動」爲零,但這很乏味,特別是在例如3D

是否有一個簡短而方便的方法來做到這一點?

編輯 爲了使3D情況更加清晰,這裏有一個例子:

[[[1]]] 

應該成爲

[[[0,0,0], 
    [0,c,0], 
    [0,0,0]], 

[[0,c,0], 
    [c,1,c], 
    [0,c,0]], 

[[0,0,0], 
    [0,c,0], 
    [0,0,0]]] 

而對於兩個填充厚度的例子將是:

[[[0,0,0,0,0], 
    [0,0,0,0,0], 
    [0,0,c,0,0], 
    [0,0,0,0,0], 
    [0,0,0,0,0]], 

[[0,0,0,0,0], 
    [0,0,0,0,0], 
    [0,0,c,0,0], 
    [0,0,0,0,0], 
    [0,0,0,0,0]], 

[[0,0,c,0,0], 
    [0,0,c,0,0], 
    [c,c,1,c,c], 
    [0,0,c,0,0], 
    [0,0,c,0,0]], 

[[0,0,0,0,0], 
    [0,0,0,0,0], 
    [0,0,c,0,0], 
    [0,0,0,0,0], 
    [0,0,0,0,0]], 

[[0,0,0,0,0], 
    [0,0,0,0,0], 
    [0,0,c,0,0], 
    [0,0,0,0,0], 
    [0,0,0,0,0]]] 
+0

填寫什麼?你的陣列總是有全部? – Divakar

+0

隨着價值不變,我編輯了這個問題。 – NOhs

+0

你確定關於3D案例的第二個2D切片嗎?它看起來與第一片相同。 – Divakar

回答

1

我覺得這個問題實際上可以通過numpy.pad函數輕鬆解決。

按照numpy.pad函數文檔的可能的參數的功能之一可以是模式:STR或功能 下列其中一個字符串值或用戶提供的函數 (來源:https://docs.scipy.org/doc/numpy-1.13.0/reference/generated/numpy.pad.html)。

這意味着你需要做的就是傳遞一個函數來檢查這是否是一個角落,如果是這樣,則將值設置爲0否則爲1.這樣的詛咒可以通過對3D進行一些修改來完成案件。

希望幫助

相關問題