উত্তর:
মতলব ব্যবহারকারীদের জন্য এখানে আরও উন্নত (অফিসিয়াল) নম্পপি রয়েছে - আমি ভয় করি ম্যাথেসরাসটি বেশ পুরানো।
এর numpy সমতুল্য repmat(a, m, n)
হয় tile(a, (m, n))
।
এটি একাধিক মাত্রার সাথে কাজ করে এবং মাতলাবকে অনুরূপ ফলাফল দেয়। (নম্পি আপনার প্রত্যাশা অনুযায়ী একটি 3 ডি আউটপুট অ্যারে দেয় - কোনও কারণে মতলব 2 ডি আউটপুট দেয় - তবে সামগ্রীটি একই)।
মতলব:
>> repmat([1;1],[1,1,1])
ans =
1
1
পাইথন:
In [46]: a = np.array([[1],[1]])
In [47]: np.tile(a, [1,1,1])
Out[47]:
array([[[1],
[1]]])
a
করে টাইল যুক্তির মাত্রায় উন্নীত করে । মতলব অন্যভাবে কাজ করছে বলে মনে হচ্ছে। একইভাবে, 4 ডি টাইলিংয়ের সাথে আপনার দু'বার নিউএক্সিসের প্রয়োজন হবে ... সুতরাং প্রয়োজন অনুসারে ...np.tile(a[:,newaxis,newaxis],[1,2,3,4]) = size(repmat(a,[1 2 3 4]))
নোট করুন যে আপনাকে ম্যাটল্যাবের পুনঃনির্মাণ ব্যবহার করার প্রয়োজনের কয়েকটি কারণ নুমপির সম্প্রচার প্রক্রিয়া দ্বারা যত্ন নেওয়া হয়েছে , যা আপনাকে অনুরূপ আকারের অ্যারে সহ বিভিন্ন ধরণের গণিত করতে দেয়। সুতরাং, যদি বলুন, একটি 1600x1400x3 অ্যারে 3-রঙের চিত্রকে উপস্থাপন করে, আপনি প্রতিটি উপাদানকে [1.0 0.25 0.25]
সবুজ এবং নীল পরিমাণ হ্রাস করে (মৌলিক দিকের) দ্বারা এটির গুণ করতে পারেন। আরও তথ্যের জন্য উপরের লিঙ্কটি দেখুন।
bsxfun
।
মতলব ব্যবহারকারীদের জন্য NumPy দেখুন ।
মতলব:
repmat(a, 2, 3)
Numpy:
numpy.kron(numpy.ones((2,3)), a)
নম্পিতে মাতালিব ( numpy.matlib.repmat () ):
numpy.matlib.repmat(a, 2, 3)
চারপাশে বিড়বিড় হয়ে আমি এইভাবে বুঝলাম। সংশোধন করার জন্য খুশি এবং আশা করি এটি সাহায্য করবে।
বলুন আপনার কাছে 2x3 উপাদানগুলির একটি ম্যাট্রিক্স এম রয়েছে। স্পষ্টতই এর দুটি মাত্রা রয়েছে।
ইতিমধ্যে ম্যাট্রিক্সের মাত্রাগুলির সাথে ইনপুট ম্যাট্রিক্সটি পরিচালনা করতে বলার সময় আমি মাতলাব এবং পাইথনের মধ্যে কোনও পার্থক্য দেখতে পেলাম না। এইভাবে দুটি আদেশ
repmat(M,m,n) % matlab
np.tile(M,(m,n)) # python
র্যাঙ্ক 2 (দুটি মাত্রা) এর ম্যাট্রিক্সের জন্য সত্যই সমতুল্য।
আপনি যখন ইনপুট ম্যাট্রিক্সের চেয়ে বেশি মাত্রায় পুনরাবৃত্তি / টাইলিংয়ের কথা বলেন তখন বিষয়গুলি স্ব-স্বজ্ঞাত হয়। র্যাঙ্ক টু এবং মাপ 2x3 এর ম্যাট্রিক্স এম এ ফিরে যাওয়া, আউটপুট ম্যাট্রিক্সের আকার / আকারের কি হবে তা দেখার পক্ষে যথেষ্ট। ম্যানিপুলেশন জন্য ক্রম এখন 1,1,2 বলুন।
মতলব-এ
> size(repmat(M,1,1,2))
ans =
2 3 2
এটি ইনপুট ম্যাট্রিক্সের প্রথম দুটি মাত্রা (সারি এবং কলাম) অনুলিপি করেছে এবং পুনরাবৃত্তি করেছে যে এটি একবার নতুন তৃতীয় মাত্রায় (দ্বিগুণ অনুলিপি করা হয়েছে)। নামকরণে সত্যrepmat
পুনরাবৃত্তি ম্যাট্রিক্সের ।
পাইথনে
>>> np.tile(M,(1,1,2)).shape
(1, 2, 6)
আমার ধারণা থেকে এটি একটি আলাদা পদ্ধতি প্রয়োগ করেছে, অনুক্রমটি (1,1,2) মতলবের চেয়ে আলাদাভাবে পড়েছে। কলাম, সারি এবং বিমানের বহিরাগত দিকের দিকের কপির সংখ্যা ডান থেকে বামে পঠিত হচ্ছে। ফলস্বরূপ বস্তুর মতলব থেকে আলাদা আকৃতি রয়েছে। এটি আর দৃ as়ভাবে বিবেচনা করতে পারে না repmat
এবং tile
এটি সমতুল্য নির্দেশাবলী।
পাইথনের tile
মতো আচরণ করতে পেতে repmat
, একটিটিকে নিশ্চিত করতে হবে যে উপাদানগুলি ক্রম অনুসারে ইনপুট ম্যাট্রিক্সের যতগুলি মাত্রা রয়েছে। এই কাজ করা হয়, উদাহরণস্বরূপ, একটু preconditioning দ্বারা এবং একটি সম্পর্কিত বস্তুর তৈরি এন
N = M[:,:,np.newaxis]
তারপরে, ইনপুট দিকে একটির N.shape = (2,3,1)
পরিবর্তে M.shape = (2,3)
এবং আউটপুট দিকে থাকে
>>> np.tile(N,(1,1,2)).shape
(2, 3, 2)
যা এর উত্তর ছিল size(repmat(M,1,1,2))
। আমি অনুমান করি এটি কারণ আমরা পাইথনকে তার বামের চেয়ে ডানদিকে (২,৩) ডানদিকে তৃতীয় মাত্রা যুক্ত করতে নির্দেশিত করেছি, যাতে মাতলাব অনুসারে পাইথনটি ক্রমটি (১,১,২) তৈরি করে এটি পড়ার উপায়।
উপাদান [:,:,0]
জন্য পাইথন উত্তরে এন উপাদান হিসাবে একই মান থাকতে হবে (:,:,1)
জন্য মতলব উত্তর এম ।
অবশেষে, repmat
যখন কেউ ক্রোনেকার পণ্য ব্যবহার করে তখন এর সমতুল্য খুঁজে পাচ্ছি না
>>> np.kron(np.ones((1,1,2)),M).shape
(1, 2, 6)
যদি না আমি তখন পূর্বশর্ত এম মধ্যে এন উপরে হিসাবে। সুতরাং আমি তর্ক করব যে এগিয়ে যাওয়ার সর্বাধিক সাধারণ উপায় হল উপায়গুলি ব্যবহার করা np.newaxis
।
গেমটি তত্পর হয়ে যায় যখন আমরা ম্যাট্রিক্স এল এর র্যাঙ্ক 3 (তিন মাত্রা) বিবেচনা করি এবং আউটপুট ম্যাট্রিক্সে কোনও নতুন মাত্রা যুক্ত না হওয়ার সহজ ক্ষেত্রে। এই দুটি আপাতদৃষ্টিতে সমতুল্য নির্দেশাবলী একই ফলাফল তৈরি করবে না
repmat(L,p,q,r) % matlab
np.tile(L,(p,q,r)) # python
কারণ সারি, কলাম, বিমানের বহির্ভূত দিকনির্দেশগুলি (পি, কিউ, আর) মতলব এবং পাইথনে (কিউ, আর, পি) রয়েছে, যা র্যাঙ্ক -২ অ্যারে দ্বারা দৃশ্যমান ছিল না। সেখানে একজনকে সতর্ক হতে হবে এবং দুটি ভাষার সাথে একই ফলাফল অর্জন করতে আরও পূর্বশর্ত প্রয়োজন require
আমি সচেতন যে এই যুক্তিটি সাধারণ নাও হতে পারে তবে আমি কেবল এটিকেই কাজ করতে পারি। আশা করি এটি আরও কঠোর পরীক্ষার জন্য অন্য ফেলোদের আমন্ত্রণ জানিয়েছে।
উভয়ই জানি tile
এবং repeat
।
x = numpy.arange(5)
print numpy.tile(x, 2)
print x.repeat(2)
>>> import numpy as np
>>> np.repeat(['a','b'], [2,5])
array(['a', 'a', 'b', 'b', 'b', 'b', 'b'], dtype='<U1')
>>> np.repeat([1,2], [2,5])
array([1, 1, 2, 2, 2, 2, 2])
>>> np.repeat(np.array([1,2]), [3]).reshape(2,3)
array([[1, 1, 1],
[2, 2, 2]])
>>> np.repeat(np.array([1,2]), [2,4]).reshape(3,2)
array([[1, 1],
[2, 2],
[2, 2]])
>>> np.repeat(np.matrix('1 2; 3 4'), [2]).reshape(4,2)
matrix([[1, 1],
[2, 2],
[3, 3],
[4, 4]])