বিন্যাসে অ্যারেতে একক উপাদান যুক্ত করুন


122

আমার একটি অদ্ভুত অ্যারে রয়েছে:

[1, 2, 3]

আমি সমন্বিত একটি অ্যারে তৈরি করতে চাই:

[1, 2, 3, 1]

এটি হ'ল, আমি অ্যারের শেষে প্রথম উপাদানটি যুক্ত করতে চাই।

আমি স্পষ্ট চেষ্টা করেছি:

np.concatenate((a, a[0]))

তবে আমি বলতে ত্রুটি পেয়েছি get ValueError: arrays must have same number of dimensions

আমি এটি বুঝতে পারি না - অ্যারেগুলি কেবলমাত্র 1 ডি অ্যারে।


1
np.insert([1,2,3], 3, 1)
স্পার্ক্লার

উত্তর:


163

append() একটি নতুন অ্যারে তৈরি করে যা সংযুক্ত উপাদানগুলির সাথে পুরানো অ্যারে হতে পারে।

আমি মনে করি কোনও উপাদান যুক্ত করার জন্য সঠিক পদ্ধতিটি ব্যবহার করা আরও স্বাভাবিক:

a = numpy.append(a, a[0])

29
এই কমান্ড aঅ্যারে পরিবর্তন করে না । তবে এটি একটি নতুন পরিবর্তিত অ্যারে প্রদান করে returns সুতরাং, যদি a পরিবর্তন প্রয়োজন হয় তবে a = numpy.append(a,a[0])অবশ্যই ব্যবহার করা উচিত।
আমজাদ

np.appendব্যবহার np.concatenate। এটি ঠিক নিশ্চিত করে যে অ্যাডনের একটি মাত্রা রয়েছে। ওপি ত্রুটিটি ছিল a[0]0 টি মাত্রা।
এইচপলজ

আমি যদি কেবল একটি উপাদান যুক্ত করতে চাই তবে সংযোজন কেন একটি সম্পূর্ণ নতুন অ্যারে তৈরি করে?
এডি 22

এ জাতীয় সরল কমান্ডের জন্য আমাদের অন্য একটি ক্রিয়াকলাপ কল করা দরকার তা আমি পছন্দ করি না। এটি যদি খুব ভাল হবে যদি অ্যারে নিজেই মতো কোনও অভ্যন্তরীণ পদ্ধতি থাকত a.append(1), a.add(1)বা এমন কিছু তালিকা অনুসারে a + [1]
ফার্নান্দো উইটম্যান 18

17

যখন একবার এবং একবারে একবার এবং একবার সংযোজন করা হয় তখন np.appendআপনার অ্যারে ব্যবহার করা ভাল হওয়া উচিত। এই পদ্ধতির অপূর্ণতা হ'ল প্রতিবার যখন বলা হয় তখন একেবারে নতুন অ্যারের জন্য মেমরি বরাদ্দ করা হয়। উল্লেখযোগ্য পরিমাণে নমুনার জন্য অ্যারে বাড়ানোর সময় অ্যারের প্রাক-বরাদ্দ করা ভাল (যদি মোট আকারটি জানা থাকে) বা একটি তালিকায় যুক্ত হয়ে পরে অ্যারেতে রূপান্তর করা ভাল।

ব্যবহার np.append:

b = np.array([0])
for k in range(int(10e4)):
    b = np.append(b, k)
1.2 s ± 16.1 ms per loop (mean ± std. dev. of 7 runs, 1 loop each)

পাইথন তালিকা ব্যবহার করে পরে অ্যারে রূপান্তর করা:

d = [0]
for k in range(int(10e4)):
    d.append(k)
f = np.array(d)
13.5 ms ± 277 µs per loop (mean ± std. dev. of 7 runs, 100 loops each)

প্রাক-বরাদ্দকারী নমপি অ্যারে:

e = np.zeros((n,))
for k in range(n):
    e[k] = k
9.92 ms ± 752 µs per loop (mean ± std. dev. of 7 runs, 100 loops each)

যখন চূড়ান্ত আকারটি অজানা প্রাক-বরাদ্দ করা কঠিন, আমি 50 এর অংশগুলিতে প্রাক-বরাদ্দের চেষ্টা করেছিলাম তবে এটি কোনও তালিকা ব্যবহারের কাছাকাছি আসে নি।

85.1 ms ± 561 µs per loop (mean ± std. dev. of 7 runs, 10 loops each)

14

a[0]অ্যারে নয়, এটি প্রথম উপাদান aএবং এর ফলে কোনও মাত্রা নেই।

a[0:1]পরিবর্তে ব্যবহার করার চেষ্টা করুন , যা aএকক আইটেম অ্যারের অভ্যন্তরের প্রথম উপাদানটি ফিরে আসবে ।


12

এটা চেষ্টা কর:

np.concatenate((a, np.array([a[0]])))

http://docs.scipy.org/doc/numpy/reference/generated/numpy.concatenate.html

সংক্ষিপ্ত আকারের উভয় উপাদানকে নম্র অ্যারে হওয়া প্রয়োজন; তবে, একটি [0] একটি অ্যারে নয়। যে কারণে এটি কাজ করে না।


বা, আরও সহজভাবে np.concatenate((a, [a[0]]))। তালিকাটি যাইহোক যাইহোক, আপনাকে কিছু টাইপ করে সংরক্ষণ করে একটি অ্যারের ধরণে প্রচারিত হবে।
ম্যাড পদার্থবিদ

10

এই আদেশ,

numpy.append(a, a[0])

aঅ্যারে পরিবর্তন করে না । তবে এটি একটি নতুন পরিবর্তিত অ্যারে প্রদান করে returns সুতরাং, যদি aপরিবর্তনের প্রয়োজন হয়, তবে নিম্নলিখিতগুলি অবশ্যই ব্যবহার করা উচিত।

a = numpy.append(a, a[0])


3

এটি কিছুটা ওভারকিল হতে পারে তবে আমি যে np.takeকোনও মোড়ানো-আশেপাশের সূচকের জন্য ফাংশনটি সর্বদা ব্যবহার করি :

>>> a = np.array([1, 2, 3])
>>> np.take(a, range(0, len(a)+1), mode='wrap')
array([1, 2, 3, 1])

>>> np.take(a, range(-1, len(a)+1), mode='wrap')
array([3, 1, 2, 3, 1])

2

বলুন a=[1,2,3]এবং আপনি এটি হতে চান [1,2,3,1]

আপনি বিল্ট-ইন অ্যাপেন্ড ফাংশনটি ব্যবহার করতে পারেন

np.append(a,1)

এখানে 1 টি ইন্টি, এটি স্ট্রিং হতে পারে এবং এটি অ্যারের উপাদানগুলির সাথে থাকতে পারে বা নাও পারে। ছাপে:[1,2,3,1]


স্ট্যাকওভারফ্লোতে আপনাকে স্বাগতম! আপনি পড়তে চাইবেন এই সহায়িকার কিভাবে ফর্ম্যাটে কোডের উপর এবং তারপর আপনার উত্তর আপডেট যাতে এটি আরো পাঠযোগ্য :) এছাড়াও এই, ভাল কিছু নতুনও উত্তর দিতে একটি গৃহীত উত্তর সঙ্গে একটি খুব পুরানো প্রশ্ন হল
0mpurdy

0

আপনি যদি একটি উপাদান ব্যবহার যুক্ত করতে চান append()

a = numpy.append(a, 1) এই ক্ষেত্রে অ্যারের শেষে 1 যুক্ত করুন

আপনি যদি একটি উপাদান ব্যবহার সন্নিবেশ করতে চান insert()

a = numpy.insert(a, index, 1) সেক্ষেত্রে আপনি অ্যারেতে অবস্থান নির্ধারণের জন্য সূচকটি ব্যবহার করে আপনার ইচ্ছামত 1 টি রাখতে পারেন।

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