क्या कोई जानता है कि पाइथन में बहु-आयामी सरणी से कॉलम निकालने का तरीका क्या है?आप बहु-आयामी सरणी से कॉलम कैसे निकालते हैं?
उत्तर
क्या यह हो सकता है कि आप NumPy array का उपयोग कर रहे हों? पायथन में array मॉड्यूल है, लेकिन यह बहु-आयामी सरणी का समर्थन नहीं करता है। सामान्य पायथन सूची एकल-आयामी भी हैं।
हालांकि, अगर आप इस तरह की एक सरल दो आयामी सूची है:
def column(matrix, i):
return [row[i] for row in matrix]
दूसरे स्तंभ निकाला जा रहा है (सूचकांक 1):
A = [[1,2,3,4],
[5,6,7,8]]
तो आप इस प्रकार का स्तंभ निकाल सकते हैं:
>>> column(A, 1)
[2, 6]
या वैकल्पिक रूप से, बस:
>>> [row[1] for row in A]
[2, 6]
आइटमेटटर ऑपरेटर भी मदद कर सकता है, अगर आप छोटी समझ के लिए सूची समझ के बजाय नक्शा-शैली शैली पाइथन पसंद करते हैं!
# 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]])
>>> A
array([[1, 2, 3, 4],
[5, 6, 7, 8]])
>>> A[:,2] # returns the third columm
array([3, 7])
भी देखें: "numpy.arange" और "नयी आकृति प्रदान" स्मृति को आबंटित करने
उदाहरण:
nrows = 3
ncols = 4
my_array = numpy.arange(nrows*ncols, dtype='double')
my_array = my_array.reshape(nrows, ncols)
मुझे खोजने के लिए 2 घंटे लग गए [:, 2] अनुमान लगाएं कि इस सुविधा का आकलन आधिकारिक साहित्य में नहीं है? – sloven
अल्पविराम का क्या अर्थ है? – Phil
@ फिल '[पंक्ति, कॉल] '। अल्पविराम अलग करता है। – AsheKetchum
(मैट्रिक्स के आकार देने (3x4) के साथ एक सरणी का आवंटन) यदि आपके पास
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]
यह छोड़कर किसी भी तरह यह neater जिप काम करता है, लेकिन तर्क के रूप में एकल सरणियों की आवश्यकता है, जैसा कि ऊपर एक ही बात है, * एक वाक्य रचना एकल सरणी तर्क
ऊपर क्या है? याद रखें कि उत्तरों हमेशा एक ही तरह से क्रमबद्ध नहीं होते हैं। – Muhd
यह साफ़ है, लेकिन यदि प्रदर्शन चिंता का विषय है तो यह सबसे कुशल नहीं हो सकता है, क्योंकि यह पूरे मैट्रिक्स को स्थानांतरित कर रहा है। – IceArdor
एफवाईआई, यह अजगर 2 में काम करता है, लेकिन पायथन 3 में आपको जनरेटर ऑब्जेक्ट मिलेगा, जो कि सब्सक्राइब नहीं है। –
का उपयोग कर के बावजूद में बहुआयामी सरणी unpacks में
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]
मैंने इस विधि की जांच की और कॉलम को पुनर्प्राप्त करने की लागत लूप के लिए नेस्टेड से सस्ता है। हालांकि, 1 डी मैट्रिक्स को 1 डी तक कम करना महंगा है यदि मैट्रिक्स बड़ा है, तो 1000 * 1000 कहें। –
एक और तरीका का उपयोग कर मैट्रिक्स
>>> from numpy import matrix
>>> a = [ [1,2,3],[4,5,6],[7,8,9] ]
>>> matrix(a).transpose()[1].getA()[0]
array([2, 5, 8])
>>> matrix(a).transpose()[0].getA()[0]
array([1, 4, 7])
[matrix[i][column] for i in range(len(matrix))]
एक नई सूची में एक मैट्रिक्स से सभी स्तंभों:
N = len(matrix)
column_list = [ [matrix[row][column] for row in range(N)] for column in range(N) ]
साथ ही आप इस का उपयोग कर सकते हैं:
values = np.array([[1,2,3],[4,5,6]])
values[...,0] # first column
#[1,4]
नोट: यह अंतर्निहित सरणी के लिए काम नहीं कर रहा है और गठबंधन नहीं है (उदा। np.array ([[1,2,3], [4,5,6,7]]))
मुझे लगता है कि आप इस तरह के
import numpy as np
A = np.array([[1,2,3,4],[5,6,7,8],[9,10,11,12]])
नीचे एक सरणी के रूप में एक सरणी से एक स्तंभ निकालना चाहते हैं अब आप पहली सरणी एक मैट्रिक्स
B=np.asmatrix(A)
C=B[:,2]
D=asarray(C)
बनाने की जरूरत है प्रारूप में
D=array[[3],
[7],
[11]]
फिर तीसरे स्तंभ प्राप्त करना चाहते हैं और अब आप बुद्धिमान तत्व कर सकते हैं अगर
एक्सेल में आप की तरह गणना करेंगे।
हालांकि इससे मुझे बहुत मदद मिली, मुझे लगता है कि उत्तर बहुत छोटा हो सकता है: 1. ए = एनपी.एरे ([[1,2,3,4], [5,6,7,8], [9, 10,11,12]]) 2. ए [:, 1] >> सरणी ([2, 6, 10]) – Ufos
मान लीजिए कि हम 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] ]
def get_col(arr, col):
return map(lambda x : x[col], arr)
a = [[1,2,3,4], [5,6,7,8], [9,10,11,12],[13,14,15,16]]
print get_col(a, 3)
नक्शा समारोह में जाने के लिए एक और तरीका है।
आप को केवल एक कॉलम की तुलना में अधिक आकर्षित करने के लिए चाहते हैं, बस टुकड़ा का उपयोग करें:
a = np.array([[1, 2, 3],[4, 5, 6],[7, 8, 9]])
print(a[:, [1, 2]])
[[2 3]
[5 6]
[8 9]]
- 1. आप एक बहुआयामी सरणी अद्वितीय कैसे बना सकते हैं?
- 2. बहुआयामी सरणी - उप सरणी
- 3. बहुआयामी सरणी
- 4. बहुआयामी सरणी कैसे बनाएं?
- 5. बहुआयामी सरणी
- 6. बहुआयामी सरणी
- 7. बहुआयामी सरणी
- 8. बहुआयामी सरणी
- 9. आप एक बहुआयामी सरणी के माध्यम से कैसे लूप करते हैं?
- 10. बाश: बहुआयामी सहयोगी सरणी
- 11. बेवकूफ: एक बहुआयामी सरणी को एक बहुआयामी सरणी
- 12. नेस्टेड सूची बहुआयामी सरणी
- 13. php बहुआयामी सरणी मूल्यों
- 14. आप Google रीडर से निर्यात की गई OPML फ़ाइल से फ़ीड यूआरएल कैसे निकालते हैं?
- 15. जावास्क्रिप्ट: सॉर्ट बहुआयामी सरणी
- 16. बहुआयामी सरणी पर सेटलेथेंथ
- 17. एफ # बहुआयामी सरणी प्रकार
- 18. बहुआयामी वस्तुओं को सरणी
- 19. PHP बहुआयामी सरणी से डुप्लिकेट मान हटाएं
- 20. एक बहुआयामी सरणी
- 21. PHP सॉर्टिंग बहुआयामी सरणी
- 22. Jinja2: बहुआयामी जावास्क्रिप्ट सरणी कैसे बनाएं?
- 23. सीडियलाइजेशन से जीडब्ल्यूटी में ऑब्जेक्ट प्रॉपर्टी को आप कैसे बाहर निकालते हैं?
- 24. आप php में किसी URL से डोमेन नाम कैसे निकालते हैं?
- 25. आप दृष्टिकोण में 'टू' फ़ील्ड से ईमेल पते कैसे निकालते हैं?
- 26. आप कक्षाओं के स्रोत कोड को एक डीएलएल फ़ाइल से कैसे निकालते हैं?
- 27. आप ack (ack-grep) से एक विशिष्ट फ़ाइल को कैसे बाहर निकालते हैं?
- 28. सी ++ 11 में आप एक बहुआयामी std :: सरणी कैसे प्रारंभ करें (प्रारंभकर्ता सूचियों के माध्यम से)?
- 29. एक बहुआयामी सरणी urlencode कैसे करें?
- 30. सभी सरणी तत्वों एक बहुआयामी सरणी
उपयोग itertools.imap बड़े डेटा के लिए –
itemgetter दृष्टिकोण दौड़ा अपने प्रयोग के मामले के लिए सूची समझ दृष्टिकोण से के बारे में 50x तेजी से। पायथन 2.7।2, केस का उपयोग कुछ सौ पंक्तियों और स्तंभों के साथ एक मैट्रिक्स पर कई पुनरावृत्तियों था। – joelpt