इनपुट सरणी जिसमें मूल्यों जोड़े जाने के लिए कर रहे हैं और val
, अदिश मूल्य जोड़े जाने के लिए है आप एक दृष्टिकोण है कि किसी भी के लिए काम करता उपयोग कर सकते हैं के रूप में a
मानते हुए की तरह बहु-आयामी सरणी a
broadcasting
और reshaping
का उपयोग कर। यहाँ कार्यान्वयन है -
shp = a.shape # Get shape
# Get an array of 1-higher dimension than that of 'a' with vals placed at each
# "incrementing" index along the entire length(.size) of a and add to a
out = a + val*np.identity(a.size).reshape(np.append(-1,shp))
नमूना रन -
In [437]: a
Out[437]:
array([[[8, 1],
[0, 5]],
[[3, 2],
[5, 1]]])
In [438]: val
Out[438]: 20
In [439]: out
Out[439]:
array([[[[ 28., 1.],
[ 0., 5.]],
[[ 3., 2.],
[ 5., 1.]]],
[[[ 8., 21.],
[ 0., 5.]],
[[ 3., 2.],
[ 5., 1.]]],
[[[ 8., 1.],
[ 20., 5.]],
[[ 3., 2.],
[ 5., 1.]]],
[[[ 8., 1.],
[ 0., 25.]],
[[ 3., 2.],
[ 5., 1.]]],
[[[ 8., 1.],
[ 0., 5.]],
[[ 23., 2.],
[ 5., 1.]]], ....
आप out
से अलग सरणियों बनाना चाहते हैं, तो आप एक अतिरिक्त कदम का उपयोग कर सकते हैं: np.array_split(out,a.size)
। लेकिन दक्षता के लिए, मैं उन सभी submatrices जैसे out[0]
(पहले उप-मैट्रिक्स के लिए), out[1]
(दूसरे उप-मैट्रिक्स के लिए) तक पहुंचने के लिए इंडेक्सिंग का उपयोग करने की सलाह दूंगा।