एक NumPy सरणी को एक NumPy सरणी में जोड़ें


179

मेरे पास एक numpy_array है। कुछ इस तरह [ a b c ]

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

मैंने बिना किसी भाग्य के निम्नलिखित करने की कोशिश की

>>> 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])

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

जवाबों:


214
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 ((a, b), धुरी = 1) आउटपुट मिलता है: array ([1, 2, 3, 2, 3, 4]) लेकिन मैं जो देख रहा हूं वह 2d array है? ?
फराजमान

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

समवर्ती () वह है जिसकी मुझे आवश्यकता थी।
काक्यो

1
numpy.vstackअनुक्रम तर्क में 2 से अधिक सरणियों को स्वीकार कर सकता है। इस प्रकार यदि आपको 2 से अधिक सरणियों को संयोजित करने की आवश्यकता है, तो vstack अधिक उपयोगी है।
बरहज

1
@oneleggedmule concatenateकई सरणियों को भी ले सकता है
एंडोलिथ

73

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

numpy.append(M, a)

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


हाय .. जब मैं यह कोशिश करता हूँ .. मुझे यह मिलता है >>> np.append (M, a) सरणी ([1., 2., 3.]] >>> np.append (M, b) सरणी ([ 2., 3., 4.]) >>> एम सरणी ([], dtype = float64) मैं उम्मीद कर रहा था कि एम एक 2D कलाकार होगा ??
फराजमान

8
@ फ़राज़: एक नज़र डालते हैं numpy.vstack()
स्वेन मार्नाच

मुझे लगता है कि यह स्वीकृत उत्तर होना चाहिए क्योंकि यह बिंदु पर सटीक उत्तर देता है।
प्रसाद राघवेंद्र

31

आप उपयोग कर सकते हैं 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]

यह दो अलग-अलग सरणियों का निर्माण नहीं करेगा, लेकिन दो सरणियों को एक एकल आयामी सरणी में जोड़ देगा।


10

स्वेन ने कहा कि यह सब बहुत ही सतर्क होना चाहिए क्योंकि स्वचालित प्रकार के समायोजन को अपेंड कहा जाता है।

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 int64 से float32, और फिर S1 तक चला गया


7

कुछ अलग की तलाश करते हुए मुझे यह लिंक मिला, कैसे सरणी वस्तुओं को एक खाली सुपीरियर सरणी में शुरू करना है, लेकिन इस पृष्ठ पर सभी समाधानों का कोई फायदा नहीं हुआ।

तब मुझे यह प्रश्न और उत्तर मिला: खाली रपी सरणी में नई पंक्ति कैसे जोड़ें

यहाँ जिस्ट:

जिस सरणी को आप चाहते हैं उसे "शुरू" करने का तरीका है:

arr = np.empty((0,3), int)

फिर आप जैसे पंक्तियों को जोड़ने के लिए समवर्ती का उपयोग कर सकते हैं:

arr = np.concatenate( ( arr, [[x, y, z]] ) , axis=0)

Https://docs.scipy.org/doc/numpy/reference/generated/numpy.concatenate.html भी देखें


4

वास्तव में एक हमेशा सुन्न सरणियों की एक सामान्य सूची बना सकता है और बाद में इसे बदल सकता है।

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]]])

2

मेरे पास एक ही मुद्दा था, और मैं @Sven Marnach के उत्तर पर टिप्पणी नहीं कर सकता था (न ही पर्याप्त प्रतिनिधि, मुझे याद है कि जब स्टैकओवरफ़्लो पहली बार शुरू हुआ था ...) वैसे भी।

10 X 10 मैट्रिक्स में यादृच्छिक संख्याओं की सूची जोड़ना।

myNpArray = np.zeros([1, 10])
for x in range(1,11,1):
    randomList = [list(np.random.randint(99, size=10))]
    myNpArray = np.vstack((myNpArray, randomList))
myNpArray = myNpArray[1:]

Np.zeros () का उपयोग करके 1 x 10 शून्य के साथ एक सरणी बनाई जाती है।

array([[0., 0., 0., 0., 0., 0., 0., 0., 0., 0.]])

फिर np.random का उपयोग करके 10 यादृच्छिक संख्याओं की एक सूची बनाई गई है और randomList को सौंपा गया है। लूप इसे 10 उच्च ढेर करता है। हमें सिर्फ पहली खाली प्रविष्टि को हटाने के लिए याद रखना होगा।

myNpArray

array([[31., 10., 19., 78., 95., 58.,  3., 47., 30., 56.],
       [51., 97.,  5., 80., 28., 76., 92., 50., 22., 93.],
       [64., 79.,  7., 12., 68., 13., 59., 96., 32., 34.],
       [44., 22., 46., 56., 73., 42., 62.,  4., 62., 83.],
       [91., 28., 54., 69., 60., 95.,  5., 13., 60., 88.],
       [71., 90., 76., 53., 13., 53., 31.,  3., 96., 57.],
       [33., 87., 81.,  7., 53., 46.,  5.,  8., 20., 71.],
       [46., 71., 14., 66., 68., 65., 68., 32.,  9., 30.],
       [ 1., 35., 96., 92., 72., 52., 88., 86., 94., 88.],
       [13., 36., 43., 45., 90., 17., 38.,  1., 41., 33.]])

तो एक समारोह में:

def array_matrix(random_range, array_size):
    myNpArray = np.zeros([1, array_size])
    for x in range(1, array_size + 1, 1):
        randomList = [list(np.random.randint(random_range, size=array_size))]
        myNpArray = np.vstack((myNpArray, randomList))
    return myNpArray[1:]

यादृच्छिक संख्या 0 - 1000 का उपयोग कर एक 7 x 7 सरणी

array_matrix(1000, 7)

array([[621., 377., 931., 180., 964., 885., 723.],
       [298., 382., 148., 952., 430., 333., 956.],
       [398., 596., 732., 422., 656., 348., 470.],
       [735., 251., 314., 182., 966., 261., 523.],
       [373., 616., 389.,  90., 884., 957., 826.],
       [587., 963.,  66., 154., 111., 529., 945.],
       [950., 413., 539., 860., 634., 195., 915.]])

1

अगर मैं आपके सवाल को समझूं, तो यहां एक तरीका है। आप कहें:

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,)]

0

इस कोड को आज़माएं:

import numpy as np

a1 = np.array([])

n = int(input(""))

for i in range(0,n):
    a = int(input(""))
    a1 = np.append(a, a1)
    a = 0

print(a1)

इसके अलावा आप "a" के बजाय सरणी का उपयोग कर सकते हैं

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.