python - numpy लंबवत दो सरणी concatenate




arrays concatenation (3)

मैंने निम्नलिखित कोशिश की:

>>> a = np.array([1,2,3])
>>> b = np.array([4,5,6])
>>> np.concatenate((a,b), axis=0)
array([1, 2, 3, 4, 5, 6])
>>> np.concatenate((a,b), axis=1)
array([1, 2, 3, 4, 5, 6])

हालांकि, मुझे उम्मीद है कि कम से कम एक परिणाम ऐसा दिखाई देगा

array([[1, 2, 3],
       [4, 5, 6]])

यह लंबवत क्यों नहीं है?


Numpy की एक अच्छी तरह से ज्ञात विशेषता r_ का उपयोग करना है। यह जल्दी से सरणी बनाने के लिए एक आसान तरीका है:

import numpy as np
a = np.array([1,2,3])
b = np.array([4,5,6])
c = np.r_[a[None,:],b[None,:]]
print(c)
#[[1 2 3]
# [4 5 6]]

a[None,:] का उद्देश्य a[None,:] को एरे जोड़ने के लिए a


चूंकि a और b दोनों में केवल एक धुरी होती है, क्योंकि उनका आकार (3) , और धुरी पैरामीटर विशेष रूप से तत्वों के धुरी को संयोजित करने के लिए संदर्भित करता है।

इस उदाहरण को स्पष्टीकरण देना चाहिए कि धुरी के साथ क्या concatenate कर रही है। आकार के साथ दो अक्षों के साथ दो वैक्टर लें (2,3) :

a = np.array([[1,5,9],[2,6,10]])
b = np.array([[3,7,11],[4,8,12]])

पहली धुरी (पहली पंक्तियों, फिर दूसरी पंक्तियों के साथ) के साथ मिलकर बनता है:

print concatenate((a,b),axis=0)
array([[ 1,  5,  9],
       [ 2,  6, 10],
       [ 3,  7, 11],
       [ 4,  8, 12]])

दूसरे अक्ष के साथ मिलकर (प्रथम के कॉलम, फिर दूसरे के कॉलम):

print concatenate((a,b),axis=1)
array([[ 1,  5,  9,  3,  7, 11],
      [ 2,  6, 10,  4,  8, 12]])

आपके द्वारा प्रस्तुत आउटपुट प्राप्त करने के लिए, आप इसका उपयोग कर सकते हैं

a = np.array([1,2,3])
b = np.array([4,5,6])
vstack((a,b))

आप अभी भी इसे संयोजित के साथ कर सकते हैं, लेकिन इसमें अधिक समय लगता है:

a=a.reshape(1,3)
b=b.reshape(1,3)
print concatenate((a,b))

a = np.array([1,2,3])
b = np.array([4,5,6])
np.array((a,b))

साथ ही साथ काम करता है

np.array([[1,2,3], [4,5,6]])

भले ही यह सूचियों की सूची है या 1 डी arrays की एक सूची है, np.array एक 2 डी सरणी बनाने की कोशिश करता है।

लेकिन यह समझना भी एक अच्छा विचार है कि कैसे np.concatenate और stack फ़ंक्शन का उसका परिवार काम करता है। इस संदर्भ में concatenate इनपुट के रूप में 2 डी arrays (या किसी भी चीज जो np.array 2 डी सरणी में बदल जाएगा) की एक सूची की जरूरत है।

np.vstack पहले loops हालांकि इनपुट सुनिश्चित करते हैं कि वे कम से कम 2 डी हैं, तो concatenate करता है। कार्यात्मक रूप से यह एरे के आयामों को विस्तारित करने जैसा ही है।

np.stack एक नया फ़ंक्शन है जो एक नए आयाम पर सरणी में शामिल होता है। डिफ़ॉल्ट np.array तरह व्यवहार करता है।

इन कार्यों के लिए कोड देखें। यदि पायथन में लिखा गया है तो आप काफी कुछ सीख सकते हैं। vstack :

return _nx.concatenate([atleast_2d(_m) for _m in tup], 0)




concatenation