বেশিরভাগ এপিএল প্রতীকগুলির মতোই, ⍉
একটি যুক্তি (ট্রান্সপোজ) বনাম দুটি আর্গুমেন্ট (ডায়াডিক ট্রান্সপোজ / পুনর্বিন্যাসের মাত্রা) সহ যখন ডাকা হয় তার আলাদা অর্থ হয়। এই চ্যালেঞ্জটি উত্তরোত্তর সম্পর্কিত, যা numpy.moveaxis
পাইথন বা permute
ম্যাটল্যাব-তে একইভাবে কাজ করে তবে আরও শক্তিশালী।
order ⍉ A
order
স্বতন্ত্র এন্ট্রি আছে যখন
যখন সমস্ত সদস্য order
পৃথক হয়, order ⍉ A
সমান:
numpy.moveaxis(A, tuple(range(len(A.shape)), order)
পাইথনে, বাpermute(A,order)
ম্যাটল্যাবে পরবর্তীকালের ডকুমেন্টেশন থেকে উদ্ধৃতি :
বি = পারমিট (এ, অর্ডার) এ এর মাত্রাগুলি পুনরায় সাজিয়েছে যাতে তারা ভেক্টর আদেশ দ্বারা নির্দিষ্ট করা ক্রমে থাকে। ফলস্বরূপ অ্যারে বি এর সমান মান রয়েছে তবে কোনও নির্দিষ্ট উপাদান অ্যাক্সেসের জন্য প্রয়োজনীয় সাবস্ক্রিপ্টগুলির ক্রমটি আদেশ অনুসারে নির্দিষ্ট করে পুনরায় সাজানো হয়।
উদাহরণস্বরূপ, ধরুন A
একটি 3D অ্যারে, এবং আসুন B ← (2 0 1)⍉A
। তাহলে বি এমন B[x0,x1,x2] = A[x2,x0,x1]
সবার জন্য thatx2,x0,x1
order ⍉ A
যখন order
বারবার এন্ট্রি আছে
যখন order
বারবার এন্ট্রি করা হয়, আমরা অ্যারের একটি তির্যক টুকরা নিতে। উদাহরণস্বরূপ, এটিকে একটি 2x3x4 অ্যারে হতে দিন। B ← (0 0 1)⍉A
এমনটি A
তৈরি করতে একটি তির্যক টুকরো গ্রহণ B
করে B[x0,x1] = A[x0,x0,x1]
। দ্রষ্টব্য এটি B
একটি 2x4 অ্যারে: এটি 3x4 হলে আমাদের সেট B[2, x1] = A[2, 2, x1]
করতে হবে যা সীমার বাইরে থাকবে A
। সাধারণভাবে k
এর ম মাত্রা B
সব ন্যূনতম হতে হবে A.shape[i]
যেমন যে order[i] = k
।
উদাহরণ
ডায়াডিক ট্রান্সপোজটি বিবেচনা করুন order⍉A
যেখানে order = [2, 1, 0]
এবং এ 3x4x5
A =
[[[ 0 1 2 3 4]
[ 5 6 7 8 9]
[10 11 12 13 14]
[15 16 17 18 19]]
[[20 21 22 23 24]
[25 26 27 28 29]
[30 31 32 33 34]
[35 36 37 38 39]]
[[40 41 42 43 44]
[45 46 47 48 49]
[50 51 52 53 54]
[55 56 57 58 59]]]
ফলাফলটি 5x4x3 অ্যারে বি =
[[[ 0 20 40]
[ 5 25 45]
[10 30 50]
[15 35 55]]
[[ 1 21 41]
[ 6 26 46]
[11 31 51]
[16 36 56]]
[[ 2 22 42]
[ 7 27 47]
[12 32 52]
[17 37 57]]
[[ 3 23 43]
[ 8 28 48]
[13 33 53]
[18 38 58]]
[[ 4 24 44]
[ 9 29 49]
[14 34 54]
[19 39 59]]]
মনে রাখবেন যে কখন, উদাহরণস্বরূপ, (x0, x1, x2) = (4,1,2) আমাদের রয়েছে B[x0,x1,x2] = A[x2, x1, x0] = A[2,1,4] = 49
।
পরিবর্তে order = [0, 0, 0]
এবং A
উপরে হিসাবে, তারপর আমাদের আউটপুট B
হবে 1-মাত্রিক আকার -3 অ্যারে B = [0, 26, 52]
যাতেB[1] = B[x0] = A[x0,x0,x0] = A[1,1,1] = 26
ইনপুট
এখানে আমরা 0-ইনডেক্সিং ব্যবহার করি তবে আপনি এপিএল ডিফল্ট হিসাবে 1-ইনডেক্সিংও ব্যবহার করতে পারেন।
A
মাত্রা n ≥ 1 এর একটি বহুমাত্রিক বা নেস্টেড অ্যারে ।একটি তালিকা
order
এর এন ধনাত্মক পূর্ণসংখ্যা গঠিত পূর্ণসংখ্যার {0,1 ..., K} (বা {1, ..., ট + 1 টি} 1-সূচক জন্য) কিছু ট < এন , কোনো অনুক্রমে, সম্ভবত পুনরাবৃত্তি সঙ্গে।
আউটপুট
- সেই যুক্তিগুলির সাথে ডায়াডিক ট্রান্সপোজ প্রয়োগের ফলাফলের প্রতিনিধিত্বকারী একটি বহুমাত্রিক বা নেস্টেড অ্যারে। (আউটপুটটির মাত্রা কে + 1 থাকবে )
আপনি মেটাতে বর্তমান মানক হিসাবে অনুমোদিত হিসাবে একটি সম্পূর্ণ প্রোগ্রাম, ফাংশন, ইত্যাদি লিখতে পারেন।
যদি আপনার ভাষার কোনও অন্তর্নির্মিত থাকে, তবে এটি একটি আকর্ষণীয় উত্তরের জন্য বিল্টিন ছাড়াই সমাধান লিখতেও উত্সাহিত।
পরীক্ষার মামলা
পাইথন বাস্তবায়ন শীঘ্রই আসছে।
পরীক্ষার কেসগুলি পড়ার জন্য দ্রষ্টব্য: এপিএলে, একটি অ্যারের পেনাল্টিমেট এবং চূড়ান্ত অক্ষগুলি সেই ক্রমে কলাম এবং সারি বরাবর থাকে।
⍉
যা ডিফল্ট হিসাবে বিপরীত অক্ষ সূচকের ব্যবহার করে, তাই ⍉A
হিসাবে একই (2 1 0)⍉A
যদি A
একটি 3-মাত্রিক অ্যারে এবং সাধারণভাবে ⍉A
হয় (⌽⍳≢⍴A)⍉A
।
[number-of-dimensions,first-dimension-length,second-dimension-length,…,last-dimension-length,first-element,second-element,…,last-element]
।
⍉
: P: P