Numpy Python में 4 आयाम सरणी के लिए निचले त्रिकोण को ऊपरी त्रिकोण में कैसे कॉपी करें?

Nov 28 2020

उद्देश्य निचले त्रिकोण को ऊपरी त्रिकोण में कॉपी करना है। ओपी में उत्पादित सुझाव के आधार पर , निम्नलिखित कोड का मसौदा तैयार किया गया था।

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))

हालाँकि, इसने एक त्रुटि दी

ValueError: इनपुट 1- या 2-d होना चाहिए।

क्या मुझे पता है कि इस मुद्दे को कैसे संभालना है?

अपेक्षित आउटपुट नीचे है

[[[0.]],, [[1.]],, [[2.]],, [[3.]]]
[[[1.]],, [[0.]],, [[2.]],, [[3.]]]
[[[2.]],, [[2.]],, [[0.]],, [[3.]]]
[[[3.]],, [[3.]],, [[3.]],, [[0.]]]

जवाब

1 fountainhead Nov 28 2020 at 16:32

अपनी त्रिकोण-प्रति का प्रदर्शन करने से पहले, अंतिम दो अक्षों (जिनमें प्रत्येक की लंबाई 1 है) को निचोड़ने के लिए एक "निचोड़" लागू करें।

यह आपको 2-डी सरणी के साथ छोड़ देता है।

फिर, अपनी त्रिभुज-प्रतिलिपि बनाने के बाद, उन अक्षों को फिर से पेश करें जिन्हें आपने निचोड़ लिया था:

arr = np.squeeze(arr)
arr = arr + arr.T - np.diag(np.diag(arr))
arr = arr[...,None, None]