আমি সেটা দেখেছি
In [30]: np.mean([1, 2, 3])
Out[30]: 2.0
In [31]: np.average([1, 2, 3])
Out[31]: 2.0
যাইহোক, কিছু পার্থক্য থাকা উচিত, যেহেতু সর্বোপরি সেগুলি দুটি পৃথক ফাংশন।
তাদের মধ্যে পার্থক্য কি কি?
আমি সেটা দেখেছি
In [30]: np.mean([1, 2, 3])
Out[30]: 2.0
In [31]: np.average([1, 2, 3])
Out[31]: 2.0
যাইহোক, কিছু পার্থক্য থাকা উচিত, যেহেতু সর্বোপরি সেগুলি দুটি পৃথক ফাংশন।
তাদের মধ্যে পার্থক্য কি কি?
উত্তর:
np.average একটি alচ্ছিক ওজন পরামিতি নেয়। যদি সরবরাহ না করা হয় তবে তারা সমান। উত্স কোডটি একবার দেখুন: গড় , গড়
np.mean:
try:
mean = a.mean
except AttributeError:
return _wrapit(a, 'mean', axis, dtype, out)
return mean(axis, dtype, out)
np.average:
...
if weights is None :
avg = a.mean(axis)
scl = avg.dtype.type(a.size/avg.size)
else:
#code that does weighted mean here
if returned: #returned is another optional argument
scl = np.multiply(avg, 0) + scl
return avg, scl
else:
return avg
...
np.average
যেহেতু তাদের কেবল প্রস্তাব দেওয়া উচিত weights
। অপ্রয়োজনীয় বলে মনে হচ্ছে এবং এটি কেবল ব্যবহারকারীদের বিভ্রান্ত করার জন্য কাজ করে।
নমির কিছু সংস্করণে আরও একটি অপ্রয়োজনীয় পার্থক্য রয়েছে যা আপনাকে সচেতন হতে হবে:
average
অ্যাকাউন্টে মুখোশ নেবেন না, সুতরাং সম্পূর্ণ ডেটার পুরো সেটটির তুলনায় গড় গণনা করুন।
mean
অ্যাকাউন্টে মুখোশ নেবে, সুতরাং কেবল আনমস্ক করা মানগুলির চেয়ে গড় গণনা করুন।
g = [1,2,3,55,66,77]
f = np.ma.masked_greater(g,5)
np.average(f)
Out: 34.0
np.mean(f)
Out: 2.0
np.ma.average
কাজ করে। এছাড়াও, একটি হল বাগ রিপোর্ট ।
আপনার অনুরোধে, দুটি ফাংশন একই।
average
যদিও একটি ওজনযুক্ত গড় গণনা করতে পারেন।
ইতিমধ্যে উল্লিখিত পার্থক্যগুলি ছাড়াও, আরও একটি অত্যন্ত গুরুত্বপূর্ণ পার্থক্য রয়েছে যা আমি এখনই শক্ত উপায়টি আবিষ্কার করেছি: এর বিপরীতে np.mean
, মূলশব্দটিকে np.average
অনুমতি দেয় না dtype
, যা কিছু ক্ষেত্রে সঠিক ফলাফল পাওয়ার জন্য প্রয়োজনীয় essential আমার কাছে খুব বড় একক-নির্ভুল অ্যারে রয়েছে যা কোনও h5
ফাইল থেকে অ্যাক্সেস করা যায় । আমি যদি 0 এবং 1 অক্ষের সাথে গড়টি গ্রহণ করি তবে আমি উল্লেখ না করে বন্যভাবে ভুল ফল পেয়েছি dtype='float64'
:
>T.shape
(4096, 4096, 720)
>T.dtype
dtype('<f4')
m1 = np.average(T, axis=(0,1)) # garbage
m2 = np.mean(T, axis=(0,1)) # the same garbage
m3 = np.mean(T, axis=(0,1), dtype='float64') # correct results
দুর্ভাগ্যক্রমে, আপনি কী সন্ধান করবেন তা না জানলে আপনি অগত্যা আপনার ফলাফলগুলি ভুল বলে দিতে পারবেন না। আমি np.average
এই কারণে আর কখনও ব্যবহার করব না তবে সর্বদা যে np.mean(.., dtype='float64')
কোনও বড় অ্যারে ব্যবহার করব । যদি আমি একটি ওজনযুক্ত গড় চাই, আমি ওজন ভেক্টর এবং লক্ষ্য অ্যারের পণ্যটি ব্যবহার করে এবং তারপরে np.sum
বা np.mean
যথাযথভাবে (যথাযথ যথাযথতা সহ) ব্যবহার করে এটি স্পষ্টভাবে গণনা করব ।