可以替代一些佔位值的中間區域(我用-12345,不能在您的實際數據會發生什麼工作),然後選擇所有不等於值:
>>> import numpy as np
>>> a = np.arange(1,26)
>>> a.shape = (5,5)
>>> a
array([[ 1, 2, 3, 4, 5],
[ 6, 7, 8, 9, 10],
[11, 12, 13, 14, 15],
[16, 17, 18, 19, 20],
[21, 22, 23, 24, 25]])
>>> a[1:4,1:4] = -12345
>>> a
array([[ 1, 2, 3, 4, 5],
[ 6, -12345, -12345, -12345, 10],
[ 11, -12345, -12345, -12345, 15],
[ 16, -12345, -12345, -12345, 20],
[ 21, 22, 23, 24, 25]])
>>> a[a != -12345]
array([ 1, 2, 3, 4, 5, 6, 10, 11, 15, 16, 20, 21, 22, 23, 24, 25])
如果使用float數組,而不是一個整數數組,您可以通過使用NaN和isfinite做多了幾分優雅:
>>> a = np.arange(1,26).astype('float32')
>>> a.shape = (5,5)
>>> a[1:4,1:4] = np.nan
>>> a
array([[ 1., 2., 3., 4., 5.],
[ 6., nan, nan, nan, 10.],
[ 11., nan, nan, nan, 15.],
[ 16., nan, nan, nan, 20.],
[ 21., 22., 23., 24., 25.]], dtype=float32)
>>> a[np.isfinite(a)]
array([ 1., 2., 3., 4., 5., 6., 10., 11., 15., 16., 20.,
21., 22., 23., 24., 25.], dtype=float32)
偉大的選擇,因爲我沒有修改原德陣列和沒有必要知道數組 – user1470350
的內容@ user1470350 - 是啊,它的一個很好的方式來做事:) – fraxel