Nicht ganz sicher, wie ich diese Frage Titel sollte. Aber wie kann ich einen Abschnitt eines numpigen Arrays erhalten, bei dem einige der Werte außerhalb der Grenze liegen?Füllen Sie einen Bereich außerhalb der Grenzen in einem numply Array
Siehe meinen einfachen Beispiel-Code unten:
def get_section(a, center, square_radius):
return a[center[0] - square_radius:center[0] + square_radius + 1, \
center[1] - square_radius:center[1] + square_radius + 1]
array = [
[1, 2, 3, 4, 5, 6, 7, 8, 9],
[2, 3, 4, 5, 6, 7, 8, 9, 1],
[3, 4, 5, 0, 7, 8, 9, 1, 2],
[4, 5, 6, 7, 8, 9, 1, 2, 3],
[5, 0, 7, 8, 9, 4, 5, 6, 7],
[6, 7, 8, 9, 1, 2, 3, 4, 5]
]
a = np.asarray(array)
square_radius = 2
center = [2,3]
print(get_section(a, center, square_radius))
center = [4,1]
print(get_section(a, center, square_radius))
sagen, dass ich ein Array, aber ich mochte einen kleinen Teil davon bekommen, durch das Zentrum und den Radius des Abschnitts Angabe Ich mag würde .
Die erste wird ausdrucken:
[[2 3 4 5 6]
[3 4 5 6 7]
[4 5 0 7 8]
[5 6 7 8 9]
[0 7 8 9 4]]
Welche genau das, was ich wollte. Der Einfachheit halber platzierte ich '0' in der Mitte der 2 identifizierten Beispiele.
Aber der zweite []
Für die zweite auszudrucken werde ich in den äußeren Werte mit -1 füllen möchten. So möchte ich es zurückgeben:
[[-1 3 4 5 0]
[-1 4 5 6 7]
[-1 5 0 7 8]
[-1 6 7 8 9]
[-1 -1 -1 -1 -1]]
Wie kann ich dies in numpy tun?
Ja, ich versuche zu verstehen, wie das funktioniert. Eine harte Zeit haben, lol. Ich lese ein paar Infos über np.pad und ich bekomme, wie es links/rechts und oben/unten aufträgt. Obwohl "a" scheint nicht zu ändern, wenn Sie "a" vor und nach der np.pad-Funktion drucken. Ich verstehe nicht wirklich, warum das Hinzufügen von TP und LP den Trick macht. Ich weiß, es funktioniert, versuche nur zu verstehen. Danke – user1179317
@ user1179317 Ich habe eine Erklärung hinzugefügt. –
Ich denke, ich habe es. Es ist fast so, wie Sie es sich vorstellen können, da die Werte, die zurückgegeben werden, die Werte innerhalb der Grenze des ursprünglichen Arrays sind, dann wird ein Padding für diesen Abschnitt hinzugefügt. War nur ein wenig verwirrend, denn wenn man dem Code folgt, scheint das Padding hinzugefügt worden zu sein, aber dann gibt man nur Werte zurück, die das hinzugefügte Padding ignorieren. – user1179317