একটি NumPy অ্যারে একটি NumPy অ্যারে যুক্ত করুন


179

আমার একটা নামি_আরে আছে কিছু একটা [ 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
আপনি একটি "অ্যারের অ্যারে" তৈরি করতে পারেন (আপনি কোনও বস্তুর অ্যারে ব্যবহার করেন) তবে আপনি প্রায় অবশ্যই তা চান না। আপনি কি করতে চেষ্টা করছেন? আপনি কি কেবল একটি 2 ডি অ্যারে চান?
জো কিংটন

উত্তর:


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
হাই যখন আমি এটি চালান আমি এই এনপি কোডসিটেনেট ((ক, খ), অক্ষ = 1) আউটপুট: অ্যারে ([1, 2, 3, 2, 3, 4]) তবে আমি যা খুঁজছি তা নকল 2 ডি অ্যারে? ?
ফ্রেজম্যান

3
@ ফ্র্যাজ: আমি সোভেনের vstack()ধারণা যুক্ত করেছি । আপনি কি জানেন array([[1,2,3],[2,3,4]])ঠিক আছে দিয়ে অ্যারে তৈরি করতে পারবেন ?
এন্ডোলিথ

কনকানেটেট () হল আমার যা প্রয়োজন।
কাকিয়ো

1
numpy.vstackক্রম যুক্তিতে 2 টিরও বেশি অ্যারে গ্রহণ করতে পারে। সুতরাং আপনার যদি 2 টিরও বেশি অ্যারে একত্রিত করতে হয় তবে vstack আরও কার্যকর।
রুহং

1
@ অ্যানলেজেডমুলে concatenateএকাধিক অ্যারেও নিতে পারে
এন্ডোলিথ

73

ঠিক আছে, ত্রুটি বার্তাটি সব বলে: NumPy অ্যারেগুলির কোনও append()পদ্ধতি নেই। এখানে একটি ফ্রি ফাংশন numpy.append()রয়েছে:

numpy.append(M, a)

এটি Mজায়গায় পরিবর্তনের পরিবর্তে একটি নতুন অ্যারে তৈরি করবে । নোট করুন যে ব্যবহারে numpy.append()উভয় অ্যারে অনুলিপি করা জড়িত। আপনি স্থির আকারের NumPy অ্যারে ব্যবহার করলে আপনি আরও ভাল পারফর্মিং কোড পাবেন।


হাই .. যখন আমি এটি চেষ্টা করি .. আমি এটি >>> এনপি.অপেন্ড (এম, এ) অ্যারে ([1., 2., 3.]) পেয়েছি >>> এনপি.অ্যাপেন্ড (এম, বি) অ্যারে ([ ২, ৩, ৪.]) >>> এম অ্যারে ([], টাইপ = ফ্লোট 64) আমি এম 2D অ্যারে হওয়ার আশা করছিলাম ??
ফ্রেজম্যান

8
@Fraz: কটাক্ষপাত আছে 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')

আপনি সামগ্রীর উপর ভিত্তি করে দেখতে পাবেন যে টাইপটি টাইপটি ইন -64 থেকে ফ্লোট 32 এ গিয়েছিল এবং তারপরে এস 1 এ গিয়েছিল


7

কিছুটা পৃথক কিছু অনুসন্ধান করার সময় আমি কীভাবে এই লিঙ্কটি পেয়েছি, কীভাবে অ্যারে অবজেক্টগুলি খালি নাম্পার অ্যারেতে যুক্ত করা যায়, তবে এই পৃষ্ঠার সমস্ত সমাধান চেষ্টা করেও কোনও লাভ হয়নি।

তারপরে আমি এই প্রশ্নটি পেয়েছি এবং উত্তরটি পেয়েছি: খালি নাম্বার অ্যারেতে কীভাবে একটি নতুন সারি যুক্ত করা যায়

এখানে বক্তব্য:

আপনি যে অ্যারে চান তা "শুরু" করার উপায়:

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

তারপরে আপনি এর মতো সারি যুক্ত করতে কনটেনেট ব্যবহার করতে পারেন:

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

Https://docs.scipy.org/doc/numpy/references/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

আমারও একই সমস্যা ছিল এবং আমি @ সোভেন মারনাচ উত্তরে মন্তব্য করতে পারিনি (পর্যাপ্ত প্রতিবেদক নয়, মনে আছে আমার মনে আছে যখন স্ট্যাকওভারফ্লো প্রথম শুরু হয়েছিল ...) যাইহোক।

10 এক্স 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 এলোমেলো সংখ্যার একটি তালিকা তৈরি করা হয় এবং এলোমেলো তালিকাতে নির্ধারিত হয়। লুপটি এটি 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 এক্স 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)

এছাড়াও আপনি "ক" এর পরিবর্তে অ্যারে ব্যবহার করতে পারেন

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.