2012-03-19 38 views
65

मेरे पास numpy_array है। कुछ [ a b c ] की तरह।एक NumPy सरणी को NumPy सरणी में जोड़ें

और फिर मैं इसे किसी अन्य NumPy सरणी में जोड़ना चाहता हूं (जैसे हम सूचियों की एक सूची बनाते हैं)। हम NumPy arrays युक्त NumPy arrays की सरणी कैसे बना सकते हैं?

मैं किसी भी भाग्य

>>> M = np.array([]) 
>>> M 
array([], dtype=float64) 
>>> M.append(a,axis=0) 
Traceback (most recent call last): 
File "<stdin>", line 1, in <module> 
AttributeError: 'numpy.ndarray' object has no attribute 'append' 
>>> a 
array([1, 2, 3]) 
+2

आप "सरणी सरणी" बना सकते हैं (आप ऑब्जेक्ट सरणी का उपयोग करते हैं), लेकिन आप लगभग निश्चित रूप से नहीं करना चाहते हैं। तुम क्या करने की कोशिश कर रहे हो? क्या आप सिर्फ 2 डी सरणी चाहते हैं? –

+2

हाँ .. मैं 2 डी सरणी – Fraz

+0

@Fraz प्राप्त करने की कोशिश कर रहा हूं: * क्यों * आप 2 डी सरणी चाहते हैं? तुम क्या करने की कोशिश कर रहे हो? – endolith

उत्तर

89
In [1]: import numpy as np 

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

In [3]: b = np.array([[9, 8, 7], [6, 5, 4]]) 

In [4]: np.concatenate((a, b)) 
Out[4]: 
array([[1, 2, 3], 
     [4, 5, 6], 
     [9, 8, 7], 
     [6, 5, 4]]) 

या इस:

In [1]: a = np.array([1, 2, 3]) 

In [2]: b = np.array([4, 5, 6]) 

In [3]: np.vstack((a, b)) 
Out[3]: 
array([[1, 2, 3], 
     [4, 5, 6]]) 
+1

हाय जब मैं इसे चलाता हूं तो मुझे यह np.concatenate ((ए, बी), अक्ष = 1) आउटपुट: सरणी ([1, 2, 3, 2, 3, 4]) लेकिन जो मैं ढूंढ रहा हूं वह numpy है 2 डी सरणी ?? – Fraz

+2

@ फ्रैज़: मैंने स्वेन के 'vstack()' विचार को जोड़ा है। आप जानते हैं कि आप 'सरणी ([[1,2,3], [2,3,4]] के साथ सरणी बना सकते हैं), है ना? – endolith

+0

concatenate() वह मुझे चाहिए जिसकी मुझे आवश्यकता है। – kakyo

33

खैर बिना निम्नलिखित करने की कोशिश की, त्रुटि संदेश यह सब कहते हैं: NumPy सरणी के एक append() विधि नहीं है।

numpy.append(M, a) 

यह बजाय जगह में M परिवर्तनशील की एक नई सरणी पैदा करेगा: वहाँ एक नि: शुल्क समारोह numpy.append() तथापि है। ध्यान दें कि numpy.append() का उपयोग करके दोनों सरणी कॉपी करना शामिल है। यदि आप निश्चित आकार के NumPy arrays का उपयोग करते हैं तो आपको बेहतर प्रदर्शन कोड मिलेगा।

+0

हाय .. जब मैं इसे आज़माता हूं .. मुझे यह >>> np.append (एम, ए) सरणी ([1., 2., 3.]) >>> np.append (एम, बी) सरणी ([2., 3., 4.]) >>> एम सरणी ([], dtype = float64) मैं उम्मीद कर रहा था कि एम 2 डी सरणी हो ?? – Fraz

+5

@ फ्रैज: 'numpy.vstack()' पर एक नज़र डालें। –

8

स्वेन ने कहा कि यह सब, सिर्फ इसलिए कि स्वत: प्रकार समायोजन की बहुत सावधान रहना जब संलग्न कहा जाता है।

In [2]: import numpy as np 

In [3]: a = np.array([1,2,3]) 

In [4]: b = np.array([1.,2.,3.]) 

In [5]: c = np.array(['a','b','c']) 

In [6]: np.append(a,b) 
Out[6]: array([ 1., 2., 3., 1., 2., 3.]) 

In [7]: a.dtype 
Out[7]: dtype('int64') 

In [8]: np.append(a,c) 
Out[8]: 
array(['1', '2', '3', 'a', 'b', 'c'], 
     dtype='|S1') 

आप सामग्री dtype float32, और फिर एस 1

0

लिए अगर मैं अपने प्रश्न समझ में int64 से चला गया के आधार पर देखने के रूप में, यहाँ एक तरीका है। कहते हैं कि तुम है:

a = [4.1, 6.21, 1.0] 

तो यहाँ कुछ कोड है ...

def array_in_array(scalarlist): 
    return [(x,) for x in scalarlist] 

कौन सा की ओर जाता है:

In [72]: a = [4.1, 6.21, 1.0] 

In [73]: a 
Out[73]: [4.1, 6.21, 1.0] 

In [74]: def array_in_array(scalarlist): 
    ....:  return [(x,) for x in scalarlist] 
    ....: 

In [75]: b = array_in_array(a) 

In [76]: b 
Out[76]: [(4.1,), (6.21,), (1.0,)] 
6

आप numpy.append() उपयोग कर सकते हैं ...

import numpy 

B = numpy.array([3]) 
A = numpy.array([1, 2, 2]) 
B = numpy.append(B , A) 

print B 

> [3 1 2 2] 

यह दो अलग सरणी नहीं बनायेगा बी यू दो सरणी को एक आयामी सरणी में जोड़ देगा।

1

वास्तव में कोई भी हमेशा numpy arrays की सामान्य सूची बना सकता है और बाद में इसे परिवर्तित कर सकता है।

In [1]: import numpy as np 

In [2]: a = np.array([[1,2],[3,4]]) 

In [3]: b = np.array([[1,2],[3,4]]) 

In [4]: l = [a] 

In [5]: l.append(b) 

In [6]: l = np.array(l) 

In [7]: l.shape 
Out[7]: (2, 2, 2) 

In [8]: l 
Out[8]: 
array([[[1, 2], 
     [3, 4]], 

     [[1, 2], 
     [3, 4]]]) 
संबंधित मुद्दे