Bir NumPy nxn dizi dilim istiyorum. Yeni bir mxm dizi yapmak, m satır ve sütunlar bu dizinin (yani satır / sütun sayılarında herhangi bir desen olmadan) keyfi bir seçim ayıklamak istiyorum . Bu örnekte diyelim ki dizi 4x4 ve bundan 2x2 bir dizi çıkarmak istiyorum.
İşte dizimiz:
from numpy import *
x = range(16)
x = reshape(x,(4,4))
print x
[[ 0 1 2 3]
[ 4 5 6 7]
[ 8 9 10 11]
[12 13 14 15]]
Kaldırılacak çizgi ve sütunlar aynı. En kolay durumda ben başında veya sonunda, yani bir 2x2 alt-matris çıkarmak istediğinizde yani:
In [33]: x[0:2,0:2]
Out[33]:
array([[0, 1],
[4, 5]])
In [34]: x[2:,2:]
Out[34]:
array([[10, 11],
[14, 15]])
Ancak başka bir satır / sütun karışımını kaldırmam gerekirse ne olur? Birinci ve üçüncü satırları / satırları kaldırmam ve böylece alt matrisi çıkarmam gerekirse [[5,7],[13,15]]
ne olur ? Herhangi bir satır / çizgi bileşimi olabilir. Ben sadece diziler diziler ve sütunlar için hem satırları ve sütunları kullanarak dizini dizine gereken bir yerde okumak, ama bu çalışmıyor gibi görünüyor:
In [35]: x[[1,3],[1,3]]
Out[35]: array([ 5, 15])
Bir yol buldum, ki:
In [61]: x[[1,3]][:,[1,3]]
Out[61]:
array([[ 5, 7],
[13, 15]])
Bununla ilgili ilk sorun, bununla yaşayabilsem de, neredeyse okunabilir olmaması. Birinin daha iyi bir çözümü varsa, kesinlikle duymak isterim.
Başka bir şey dizileri diziler dizine NumPy istenen dizinin bir kopyasını yapmaya zorlar, böylece büyük diziler ile tedavi bu bir sorun haline gelebilir bir forumda okumak olduğunu. Bu neden böyle / bu mekanizma nasıl çalışıyor?