উত্তর:
>>> import numpy as np
>>> A = np.array([[1,2,3,4],[5,6,7,8]])
>>> A
array([[1, 2, 3, 4],
[5, 6, 7, 8]])
>>> A[:,2] # returns the third columm
array([3, 7])
এছাড়াও দেখুন: মেমরি বরাদ্দ করতে "numpy.arange" এবং "পুনঃ আকার"
উদাহরণ: (ম্যাট্রিক্সের আকারের সাথে একটি অ্যারের বরাদ্দকরণ (3x4))
nrows = 3
ncols = 4
my_array = numpy.arange(nrows*ncols, dtype='double')
my_array = my_array.reshape(nrows, ncols)
[row, col]
। কমা পৃথক।
এমন কি হতে পারে যে আপনি একটি নম্পপি অ্যারে ব্যবহার করছেন ? পাইথনের অ্যারে মডিউল রয়েছে তবে এটি বহুমাত্রিক অ্যারে সমর্থন করে না। সাধারণ পাইথন তালিকাগুলি একক মাত্রিকও।
তবে আপনার কাছে যদি এই জাতীয় একটি সাধারণ দ্বি-মাত্রিক তালিকা থাকে:
A = [[1,2,3,4],
[5,6,7,8]]
তারপরে আপনি এই জাতীয় কলামটি বের করতে পারেন:
def column(matrix, i):
return [row[i] for row in matrix]
দ্বিতীয় কলামটি বের করা হচ্ছে (সূচী 1):
>>> column(A, 1)
[2, 6]
বা বিকল্পভাবে, সহজভাবে:
>>> [row[1] for row in A]
[2, 6]
আপনার মত অ্যারে থাকলে
a = [[1, 2], [2, 3], [3, 4]]
তারপরে আপনি এর মতো প্রথম কলামটি বের করুন:
[row[0] for row in a]
সুতরাং ফলাফলটি এরকম দেখাচ্ছে:
[1, 2, 3]
এটা দেখ!
a = [[1, 2], [2, 3], [3, 4]]
a2 = zip(*a)
a2[0]
এটি উপরে যেমন একইভাবে হয় তবে জিপটি আরও কম কাজ করে তবে আর্গুমেন্ট হিসাবে একক অ্যারের প্রয়োজন হয়, * একটি বাক্য গঠন বহুমাত্রিক অ্যারেটিকে একক অ্যারে আর্গুমেন্টে আনপ্যাক করে
a2 = zip(*a); a2 = list(a2); a2[0]
>>> x = arange(20).reshape(4,5)
>>> x array([[ 0, 1, 2, 3, 4],
[ 5, 6, 7, 8, 9],
[10, 11, 12, 13, 14],
[15, 16, 17, 18, 19]])
আপনি যদি দ্বিতীয় কলামটি চান তবে আপনি ব্যবহার করতে পারেন
>>> x[:, 1]
array([ 1, 6, 11, 16])
arange()
পাইপোন 3 এর জন্য আমি নপির বাইরে কোনও ডকুমেন্টেশন পাচ্ছি না। যে কেউ?
আইটেমজেটার অপারেটর যদি খুব সামান্য বৈচিত্র্যের জন্য তালিকা বোধগম্যতার চেয়ে মানচিত্র-হ্রাস শৈলীর অজগর পছন্দ করে তবে সেগুলিও সহায়তা করতে পারে!
# tested in 2.4
from operator import itemgetter
def column(matrix,i):
f = itemgetter(i)
return map(f,matrix)
M = [range(x,x+5) for x in range(10)]
assert column(M,1) == range(1,11)
আমি মনে করি আপনি নীচে অ্যারের মতো অ্যারে থেকে কলামটি বের করতে চান
import numpy as np
A = np.array([[1,2,3,4],[5,6,7,8],[9,10,11,12]])
এখন আপনি যদি তৃতীয় কলামটি বিন্যাসে পেতে চান
D=array[[3],
[7],
[11]]
তারপরে আপনাকে প্রথমে অ্যারেটিকে একটি ম্যাট্রিক্স তৈরি করতে হবে
B=np.asmatrix(A)
C=B[:,2]
D=asarray(C)
এবং এখন আপনি অ্যালেক্সের মতো হিসাবগুলি করতে পারেন যেমন আপনি এক্সলে করেন।
ধরা যাক আমাদের n X m
ম্যাট্রিক্স ( n
সারি এবং m
কলাম) আছে 5 টি সারি এবং 4 কলাম
matrix = [[1,2,3,4],[5,6,7,8],[9,10,11,12],[13,14,15,16],[17,18,19,20]]
পাইথনে কলামগুলি বের করতে, আমরা এই জাতীয় তালিকা বোঝার ব্যবহার করতে পারি
[ [row[i] for row in matrix] for in range(4) ]
আপনার ম্যাট্রিক্সের যতগুলি কলাম রয়েছে তার দ্বারা আপনি 4 প্রতিস্থাপন করতে পারেন। ফলাফল হলো
[ [1,5,9,13,17],[2,10,14,18],[3,7,11,15,19],[4,8,12,16,20] ]
array = [[1,2,3,4],[5,6,7,8],[9,10,11,12],[13,14,15,16]]
col1 = [val[1] for val in array]
col2 = [val[2] for val in array]
col3 = [val[3] for val in array]
col4 = [val[4] for val in array]
print(col1)
print(col2)
print(col3)
print(col4)
Output:
[1, 5, 9, 13]
[2, 6, 10, 14]
[3, 7, 11, 15]
[4, 8, 12, 16]
পাইথনে যদি আপনার দ্বি-মাত্রিক অ্যারে থাকে (নোংরা নয়), আপনি এর মতো সমস্ত কলামগুলি বের করতে পারেন,
data = [
['a', 1, 2],
['b', 3, 4],
['c', 5, 6]
]
columns = list(zip(*data))
print("column[0] = {}".format(columns[0]))
print("column[1] = {}".format(columns[1]))
print("column[2] = {}".format(columns[2]))
এই কোডটি কার্যকর করলে ফল পাওয়া যাবে,
>>> print("column[0] = {}".format(columns[0]))
column[0] = ('a', 'b', 'c')
>>> print("column[1] = {}".format(columns[1]))
column[1] = (1, 3, 5)
>>> print("column[2] = {}".format(columns[2]))
column[2] = (2, 4, 6)
অবশ্যই, আপনি সূচী দ্বারা একটি একক কলাম বের করতে পারেন (উদাঃ columns[0]
)
zip(*iterable)
নেস্টেড তালিকা স্থানান্তর করতে ব্যবহার করা সত্ত্বেও , নীস্টযুক্ত তালিকা দৈর্ঘ্যে পরিবর্তিত হয় তবে আপনি নীচেরগুলিও ব্যবহার করতে পারেন:
map(None, *[(1,2,3,), (4,5,), (6,)])
ফলাফল স্বরূপ:
[(1, 4, 6), (2, 5, None), (3, None, None)]
প্রথম কলামটি হ'ল:
map(None, *[(1,2,3,), (4,5,), (6,)])[0]
#>(1, 4, 6)
ভাল একটি 'বিট' দেরী ...
যদি পারফরম্যান্স সম্পর্কিত বিষয় এবং আপনার ডেটা আয়তক্ষেত্রাকার আকারযুক্ত হয় তবে আপনি এটি এক মাত্রায় সংরক্ষণ করতে পারেন এবং নিয়মিত টুকরো টুকরো করে কলামগুলি অ্যাক্সেস করতে পারেন ...
A = [[1,2,3,4],[5,6,7,8]] #< assume this 4x2-matrix
B = reduce( operator.add, A ) #< get it one-dimensional
def column1d( matrix, dimX, colIdx ):
return matrix[colIdx::dimX]
def row1d( matrix, dimX, rowIdx ):
return matrix[rowIdx:rowIdx+dimX]
>>> column1d( B, 4, 1 )
[2, 6]
>>> row1d( B, 4, 1 )
[2, 3, 4, 5]
ঝরঝরে জিনিস এটি সত্যিই দ্রুত। তবে নেতিবাচক সূচী এখানে কাজ করে না! সুতরাং আপনি সূচি -1 দ্বারা সর্বশেষ কলাম বা সারিটি অ্যাক্সেস করতে পারবেন না।
আপনার যদি নেতিবাচক সূচকের প্রয়োজন হয় তবে আপনি অ্যাক্সেসর-ফাংশনগুলি কিছুটা টিউন করতে পারেন, যেমন
def column1d( matrix, dimX, colIdx ):
return matrix[colIdx % dimX::dimX]
def row1d( matrix, dimX, dimY, rowIdx ):
rowIdx = (rowIdx % dimY) * dimX
return matrix[rowIdx:rowIdx+dimX]
আমি পরবর্তী ইঙ্গিতটি পছন্দ করি: ম্যাট্রিক্সের নামকরণ matrix_a
এবং ব্যবহার column_number
করা উদাহরণস্বরূপ:
import numpy as np
matrix_a = np.array([[1,2,3,4],[5,6,7,8],[9,10,11,12]])
column_number=2
# you can get the row from transposed matrix - it will be a column:
col=matrix_a.transpose()[column_number]
কেবল ট্রান্সপোজ () ব্যবহার করুন, তারপরে আপনি সারি পাওয়ার সাথে সাথে কলম্বমগুলি সহজেই পেতে পারেন
matrix=np.array(originalMatrix).transpose()
print matrix[NumberOfColum]
একটি ম্যাট্রিক্স থেকে সমস্ত কলাম একটি নতুন তালিকায়:
N = len(matrix)
column_list = [ [matrix[row][column] for row in range(N)] for column in range(N) ]