Wie kann ich ein numpy Array verändern und es mit einem bestimmten Wert füllen (wenn eine Dimension erweitert wird)?Numpy Größenänderung und Füllung mit spezifischem Wert
ich einen Weg finden, meine Array mit np.pad zu verlängern, aber ich kann es nicht verkürzen:
>>> import numpy as np
>>> a = np.ndarray((5, 5), dtype=np.uint16)
>>> a
array([[0, 0, 0, 0, 0],
[0, 0, 0, 0, 0],
[0, 0, 0, 0, 0],
[0, 0, 0, 0, 0],
[0, 0, 0, 0, 0]], dtype=uint16)
>>> np.pad(a, ((0, 1), (0,3)), mode='constant', constant_values=9)
array([[0, 0, 0, 0, 0, 9, 9, 9],
[0, 0, 0, 0, 0, 9, 9, 9],
[0, 0, 0, 0, 0, 9, 9, 9],
[0, 0, 0, 0, 0, 9, 9, 9],
[0, 0, 0, 0, 0, 9, 9, 9],
[9, 9, 9, 9, 9, 9, 9, 9]], dtype=uint16)
Und wenn ich die Größe verwenden kann ich nicht den Wert angeben, die ich will benutzen.
>>> a.fill(5)
>>> a.resize((2, 7))
>>> a
array([[5, 5, 5, 5, 5, 5, 5],
[5, 5, 5, 5, 5, 5, 5]], dtype=uint16)
aber ich würde
>>> a
array([[5, 5, 5, 5, 5, 9, 9],
[5, 5, 5, 5, 5, 9, 9]], dtype=uint16)
Nach einigen Test mag ich diese Funktion zu erstellen, aber es ist nur, wenn Sie x_value oder mit einem niedrigeren y_value ändern, wenn Sie y Dimension erhöhen müssen es nicht der Fall ist Arbeit, warum?
VALUE_TO_FILL = 9
def resize(self, x_value, y_value):
x_diff = self.np_array.shape[0] - x_value
y_diff = self.np_array.shape[1] - y_value
self.np_array.resize((x_value, y_value), refcheck=False)
if x_diff < 0:
self.np_array[x_diff:, :] = VALUE_TO_FILL
if y_diff < 0:
self.np_array[:, y_diff:] = VALUE_TO_FILL
Possible Duplikat [Python: eine bestehende Array Resize und füllt mit Nullen] (http://stackoverflow.com/questions/9251635/python-resize- ein-existing-array-and-fill-mit-null) – Serenity
Ich habe bereits versucht, die Lösungen in diesem Thema, aber ich kann es nicht funktionieren für mein Problem (wie ich sagte, ich versuche np.Pad, aber ich kann mein Array mit dieser Funktion nicht kürzen) –