Bagaimana cara menyalin segitiga bawah ke segitiga atas untuk array 4 dimensi di Numpy Python?
Nov 28 2020
Tujuannya adalah untuk menyalin segitiga bawah ke segitiga atas. Berdasarkan saran yang dihasilkan dalam OP , kode berikut disusun.
import numpy as np
lw_up_pair = np.tril_indices(4, -1)
arr=np.zeros((4,4,1,1))
arr[1,:1,:,0]=1
arr[2,:2,0,0]=2
arr[3,:3,0,0]=3
arr = arr + arr.T - np.diag(np.diag(arr))
Namun, ini memberikan kesalahan
ValueError: Input harus 1- atau 2-d.
Bolehkah saya tahu bagaimana menangani masalah ini?
Output yang diharapkan adalah seperti di bawah ini
[[[0.]],, [[1.]],, [[2.]],, [[3.]]]
[[[1.]],, [[0.]],, [[2.]],, [[3.]]]
[[[2.]],, [[2.]],, [[0.]],, [[3.]]]
[[[3.]],, [[3.]],, [[3.]],, [[0.]]]
Jawaban
1 fountainhead Nov 28 2020 at 16:32
Sebelum melakukan salinan segitiga Anda, terapkan "pemerasan" untuk menekan dua sumbu terakhir (yang masing-masing memiliki panjang 1).
Ini membuat Anda memiliki array 2-D.
Kemudian, setelah melakukan salinan segitiga Anda, perkenalkan kembali sumbu yang telah Anda remas:
arr = np.squeeze(arr)
arr = arr + arr.T - np.diag(np.diag(arr))
arr = arr[...,None, None]
Kiat Pemilik Anjing yang Bermanfaat: Mengapa Penting untuk Membiarkan Anjing Anda Mengendus di Jalan
Jana Duggar: Semua yang Dia Katakan Tentang Cinta dan Jendela 5 Tahunnya untuk Menemukan 'Yang Satu'