पायथन: एक (4,1,2) सरणी (4,1,2) सरणी प्राप्त करने के लिए एक (4,1,2) -एरे को गुणा करना - पायथन, सरणी, numpy, multidimensional-array, matrix-गुणा

जैसा कि शीर्षक कहता है, मैं मूल रूप से दूसरा मैट्रिक्स चाहता हूं (चलो इसे बी कहते हैं) पहले मैट्रिक्स की पंक्तियों के लिए गुणा की एक सूची होगी (जिसे हम "ए कॉल" कहते हैं)।

मैं यह कार्य कैसे करूं? उदाहरण:

A = np.array([[[ 1.,  3.]],
[[ 1.,  4.]],
[[ 1.,  5.]],
[[ 1.,  8.]]])

B = np.array([[0],
[1],
[3],
[8]], dtype=np.int64)

और मैं परिणाम चाहता हूं

C = np.array([[[0., 0.,]],
[[1.,  4.]],
[[3.,  15.]],
[[8.,  64.]]])

उत्तर:

उत्तर № 1 के लिए 1

इस मामले में काम करने के लिए प्रसारण के लिए आपको "देने की आवश्यकता होगी B एक नई धुरी:

>>> A * B[:,None,:]
array([[[  0.,   0.]],
[[  1.,   4.]],
[[  3.,  15.]],
[[  8.,  64.]]])

जवाब के लिए 0 № 2

आपको मिल सकता है np.einsum() एन-आयामी सरणियों के साथ उपयोगी होने के लिए। इस मामले में, आप कर सकते हैं

np.einsum("i...,i...->i...",A,B)

अपना इच्छित उत्तर पाने के लिए।

np.einsum("ijk,il->ijk",A,B)

यह भी काम करता है, और अधिक स्पष्ट है।

पर अधिक जानकारी np.einsum() पाया जा सकता है यहाँ


संबंधित सवाल
सबसे लोकप्रिय