2 biçimine döndürür. this question içinde, belirli bir matrisin lower
ve upper
triagular bölümlerine nasıl erişileceği açıklanır.bir simetrik matrisin üst/alt üçgen parçasını (2B dizi) 1D dizisine dönüştürür ve
indices = np.triu_indices_from(m)
a = np.asarray(m[indices])[-1]
#array([11, 12, 13, 22, 23, 33])
değerlerini değiştirerek, a
hesaplama yapıyoruz sonra, kullanılacak:
m = np.matrix([[11, 12, 13],
[21, 22, 23],
[31, 32, 33]])
Burada yapıyor yapılabilir bir 1D dizisinde matrisi dönüştürmek gerekiyor doldurmak mmetric 2D array:
new = np.zeros(m.shape)
for i,j in enumerate(zip(*indices)):
new[j]=a[i]
new[j[1],j[0]]=a[i]
dönersek:
array([[ 11., 12., 13.],
[ 12., 22., 23.],
[ 13., 23., 33.]])
Bunu gerçekleştirmek için daha iyi bir yolu var mı? Daha özel olarak, 2D dizisini yeniden oluşturmak için Python döngüsünden kaçınmak mı istiyorsunuz?
Ben simetrik '2D-array' dönmeden önce orta vadeli dizisi' a' işlemek zorunda –
Sen işleyebilirsiniz 'm Doğru sırayla 1D numpy dizisi döndürdüğü sürece. Bununla ilgili özel bir sorun mu var? – Daniel
a dizisinden ([11, 12, 13, 22, 23, 33]) 'dan karşılık gelen bir 2B dizi dizisine ([[11,12,13], [12,22,23], [13,23,33]]) ' –