/ / Numpy, 2 डी सरणी को 3 डी में कैसे परिवर्तित करें (कोल्स को 2 सूची में समूहित करके) - पायथन, सरणी, numpy

बेवकूफ़, 2 डी सरणी को 3 डी में कैसे परिवर्तित करें (कोल्स को 2 सूची में समूहित करके) - पायथन, सरणी, numpy

जैसे

कनवर्ट करने से पहले

array([[0, 0, 0],
[0, 1, 1],
[1, 0, 1],
[1, 1, 0]])

कनवर्ट करने के बाद

array([[[0, 0], [0]],
[[0, 1], [1]],
[[1, 0], [1]],
[[1, 1], [0]]])

मैंने पंक्तियों को लूप करके और प्रत्येक पंक्ति (उदा। [0, 0, 0]) को 2 सूचियों में फिसलने से किया (उदा। [[0, 0], [0]])। कोई numpy- शैली शॉर्टकट?

उत्तर:

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

आप कल्पना करते हैं कि आप फैंसी numpy अनुक्रमण कर सकते हैं:

>>> a=np.arange(12).reshape(4,3)
>>> a
array([[ 0,  1,  2],
[ 3,  4,  5],
[ 6,  7,  8],
[ 9, 10, 11]])
>>> b=np.array([a[:,0:2].tolist(),a[:,2:3].tolist()])
>>> b
array([[[0, 1], [3, 4], [6, 7], [9, 10]],
[[2], [5], [8], [11]]], dtype=object)
>>> b[0][0][0],b[0][0][1],b[1][0][0]
(0, 1, 2)

का संस्करण .tolist() की एक प्रति बना देगा a.

या, यदि आप वस्तु को अंदर चाहते हैं b एक संदर्भ या देखने के लिए a:

>>> b=np.array([a[:,0:2],a[:,2:3]])
>>> b
array([[[0 1], [3 4], [6 7], [ 9 10]],
[[2], [5], [8], [11]]], dtype=object)
>>> b[0][0][0],b[0][0][1],b[1][0][0]
(0, 1, 2)

फिर b कब बदल जाएगा a कर देता है:

>>> a[0][0]=23
>>> a
array([[23,  1,  2],
[ 3,  4,  5],
[ 6,  7,  8],
[ 9, 10, 11]])
>>> b
array([[[23  1], [3 4], [6 7], [ 9 10]],
[[2], [5], [8], [11]]], dtype=object)
>>> b[0][0].flags["OWNDATA"]
False