विचार N-D निर्देशांक बनाने का है जो 3 से विभाज्य है। सरलता के लिए, निर्देशांक मान केवल 1 और 2 होने दें।

6D निर्देशांक के लिए, निम्न कोड का उपयोग मान 1 और 2 के साथ 64 अद्वितीय समन्वय उत्पन्न करने के लिए किया जा सकता है।

x=np.arange(1, 3, 1)
y=np.arange(1,3, 1)
z=np.arange(1,3, 1)
x_mesh, y_mesh, z_mesh=np.meshgrid(x,y,z)

coords = [(a2, b2, c2,) for a, b, c in zip(x_mesh, y_mesh, z_mesh) for a1, b1, c1 in zip(a, b, c) for a2, b2, c2 in zip(a1, b1, c1)]
arr = np.array ( coords )
sorted_array = arr [np.lexsort ( (arr [:, 1], arr [:, 0]) )] # Optional, but it is here for easy comparison with output manually produced with excel
rep_1 = np.repeat ( sorted_array, repeats=8, axis=0 )
t2 = np.tile ( sorted_array,
               (8, 1) )  # Optional, but it is here for easy comparison with output manually produced with excel
Table_6d = np.concatenate ( (rep_1, t2), axis=1 )

इसी तरह, उपरोक्त कोड को 9D निर्देशांक बनाने के लिए बढ़ाया जा सकता है, जो मान 1 और 2 के साथ 512 अद्वितीय समन्वय उत्पन्न करता है। 9D निर्देशांक का उत्पादन करने के लिए कोड नीचे दिखाया गया है।

x=np.arange(1, 3, 1)
y=np.arange(1,3, 1)
z=np.arange(1,3, 1)
x_mesh, y_mesh, z_mesh=np.meshgrid(x,y,z)

coords = [(a2, b2, c2,) for a, b, c in zip(x_mesh, y_mesh, z_mesh) for a1, b1, c1 in zip(a, b, c) for a2, b2, c2 in zip(a1, b1, c1)]
arr = np.array(coords)
sorted_array =arr[np.lexsort((arr[:, 1], arr[:, 0]))]
r_a = np.repeat(sorted_array, repeats=8, axis=0)
t2 = np.tile(sorted_array,(8,1))
temp_tab=np.concatenate((r_a , t2 ), axis=1)
tvv = np.tile(temp_tab,(8,1))
T3 =tvv[np.lexsort((tvv[:, 5], tvv[:, 4], tvv[:, 3],tvv[:, 2], tvv[:, 1], tvv[:, 0]))] # Optional, but it is here for easy comparison with output manually produced with excel
t3_1 = np.tile(sorted_array,(64,1))

Table_9d=np.concatenate((T3 , t3_1 ), axis=1) 

अंत में, मैं एक उच्च आयाम को हज़ार के परिमाण में समन्वयित करना चाहता हूँ।

हालांकि उपरोक्त कोड का विस्तार करना संभव है, लेकिन मुझे यकीन नहीं है कि उच्च आयाम आवश्यकता को संभालने के लिए इसे कैसे सामान्यीकृत किया जाए।

किसी भी विचार या पठन सामग्री के लिए सराहना करें।

अनुलेख, इतना बड़ा आयाम बनाने का मुख्य कारण यह है कि मैं पंडों के वैश्वीकरण को लागू करना चाहता था।

0
rpb 19 अक्टूबर 2020, 19:44

1 उत्तर

सबसे बढ़िया उत्तर

meshgrid के साथ एक मनमाना एनडी ग्रिड बनाने के लिए आप बस और सूचियां पास करते हैं। उदाहरण के लिए यह 1-3 . निर्देशांक के साथ 9 आयामी ग्रिड बनाता है

>>> arr = np.meshgrid(*[[1,2,3] for _ in range(9)])
>>> len(arr)
9
>>> arr[0].shape
(3, 3, 3, 3, 3, 3, 3, 3, 3)
1
Cory Nezin 19 अक्टूबर 2020, 16:57