মূলত ট্রান্সপোজ ফাংশনটি যা করে তা হ'ল অ্যারের আকার এবং ধাপগুলি অদলবদল করা:
>>> a = np.ones((1,2,3))
>>> a.shape
(1, 2, 3)
>>> a.T.shape
(3, 2, 1)
>>> a.strides
(48, 24, 8)
>>> a.T.strides
(8, 24, 48)
1 ডি নিম্পি অ্যারের ক্ষেত্রে (র্যাঙ্ক -1 অ্যারে) আকার এবং স্ট্রাইডগুলি 1-উপাদান টিপলস এবং এটিকে অদলবদল করা যায় না এবং এই জাতীয় 1 ডি অ্যারের স্থানান্তর এটি অপরিবর্তিত করে দেয় returns পরিবর্তে, আপনি একটি "সারি-ভেক্টর" (আকারের আঙ্কুল অ্যারে (1, n)
) একটি "কলাম-ভেক্টর" (আকারের আঙ্কুল অ্যারে) তে স্থানান্তর করতে পারেন (n, 1)
। এটি অর্জনের জন্য আপনাকে প্রথমে আপনার 1 ডি নাম্পার অ্যারেটিকে সারি-ভেক্টরে রূপান্তর করতে হবে এবং তারপরে আকার এবং স্ট্রাইডগুলি (এটি স্থানান্তর) বদল করতে হবে। নীচে একটি ফাংশন যা এটি করে:
from numpy.lib.stride_tricks import as_strided
def transpose(a):
a = np.atleast_2d(a)
return as_strided(a, shape=a.shape[::-1], strides=a.strides[::-1])
উদাহরণ:
>>> a = np.arange(3)
>>> a
array([0, 1, 2])
>>> transpose(a)
array([[0],
[1],
[2]])
>>> a = np.arange(1, 7).reshape(2,3)
>>> a
array([[1, 2, 3],
[4, 5, 6]])
>>> transpose(a)
array([[1, 4],
[2, 5],
[3, 6]])
অবশ্যই আপনার এটি করতে হবে না যেহেতু আপনার কাছে 1D অ্যারে রয়েছে এবং আপনি এটি সরাসরি (n, 1)
অ্যারে রূপান্তর করতে পারেন a.reshape((-1, 1))
বা দ্বারা a[:, None]
। আমি কেবল প্রদর্শন করতে চেয়েছিলাম যে কোনও অ্যারের স্থানান্তর কীভাবে কাজ করে।