this question में यह कैसे lower
और upper
किसी दिए गए मैट्रिक्स के triagular भागों को एक्सेस कर समझाया गया है करने के लिए वापस, कहते हैं:एक -1 डी सरणी में एक सममित मैट्रिक्स (2 डी सरणी) की ऊपरी/निचले त्रिकोणीय भाग को बदलने और यह 2 डी प्रारूप
indices = np.triu_indices_from(m)
a = np.asarray(m[indices])[-1]
#array([11, 12, 13, 22, 23, 33])
a
साथ गणना की एक बहुत कुछ कर, अपने मूल्यों को बदलने के बाद, यह करने के लिए उपयोग किया जाएगा:
m = np.matrix([[11, 12, 13],
[21, 22, 23],
[31, 32, 33]])
यहाँ मैं एक 1 डी सरणी है, जो कर किया जा सकता है में मैट्रिक्स को बदलने की जरूरत है एक sy भरें mmetric 2 डी सरणी:
new = np.zeros(m.shape)
for i,j in enumerate(zip(*indices)):
new[j]=a[i]
new[j[1],j[0]]=a[i]
रिटर्निंग:
array([[ 11., 12., 13.],
[ 12., 22., 23.],
[ 13., 23., 33.]])
वहाँ एक बेहतर तरीका यह पूरा करने के है? अधिक विशिष्ट रूप से, 2 डी सरणी के पुनर्निर्माण के लिए पाइथन लूप से परहेज?
मैं सममित '2 डी-array' पर लौटने से पहले मध्यम पद सरणी' A' कार्रवाई करने के लिए है –
आप में हेरफेर कर सकते हैं 'मीटर [indup ] 'जब तक यह सही क्रम में 1 डी numpy सरणी देता है। क्या इसके साथ कोई विशेष समस्या है? – Daniel
को 'सरणी ([11, 12, 13, 22, 23, 33]) से संबंधित एक 2 डी-सरणी सरणी ([[11,12,13], [12,22,23] से आना है, [13,23,33]]) –