উত্তর:
আপনার একাধিক বিকল্প রয়েছে। দুটি বিকল্প নিম্নলিখিত।
numpy.sum(boolarr)
numpy.count_nonzero(boolarr)
এখানে একটি উদাহরণ:
>>> import numpy as np
>>> boolarr = np.array([[0, 0, 1], [1, 0, 1], [1, 0, 1]], dtype=np.bool)
>>> boolarr
array([[False, False, True],
[ True, False, True],
[ True, False, True]], dtype=bool)
>>> np.sum(boolarr)
5
অবশ্যই, এটি একটি নির্দিষ্ট bool
উত্তর। আরও সাধারণভাবে, আপনি ব্যবহার করতে পারেন numpy.count_nonzero
।
>>> np.count_nonzero(boolarr)
5
bool
: বুলিয়ান মানগুলি গাণিতিক ক্রিয়াকলাপগুলিতে 1 এবং 0 হিসাবে বিবেচিত হয়। পাইথন স্ট্যান্ডার্ড লাইব্রেরি ডকুমেন্টেশনে " বুলিয়ান মান " দেখুন । মনে রাখবেন যে NumPy bool
এবং পাইথন bool
এক নয়, তবে তারা সামঞ্জস্যপূর্ণ ( আরও তথ্যের জন্য এখানে দেখুন)।
numpy.count_nonzero
না থাকার বিষয়ে : আপনি ঠিক বলেছেন। এই প্রকাশের ঘোষণা অনুযায়ী এটি NumPy v1.6.0 এ যুক্ত হয়েছিল।
numpy.count_nonzero
আমার পাইথন ইন্টারপ্রেটারে কমপক্ষে এফডাব্লুআইডাব্লু প্রায় হাজার গুণ দ্রুতগতি সম্পন্ন। python -m timeit -s "import numpy as np; bools = np.random.uniform(size=1000) >= 0.5" "np.count_nonzero(bools)"
বনামpython -m timeit -s "import numpy as np; bools = np.random.uniform(size=1000) >= 0.5" "sum(bools)"
np.sum(bools)
পরিবর্তে তুলনা করা উচিত ! তবে np.count_nonzero(bools)
এখনও 12x ডলার দ্রুত faster
এই প্রশ্নটি আমার জন্য বেশ অনুরূপ প্রশ্নের সমাধান করেছে এবং আমি ভেবেছিলাম আমার ভাগ করা উচিত:
কাঁচা পাইথনে আপনি মানগুলিতে একটি sum()
গণনা করতে ব্যবহার করতে পারেন :True
list
>>> sum([True,True,True,False,False])
3
তবে এটি কাজ করবে না:
>>> sum([[False, False, True], [True, False, True]])
TypeError...
দুটি ন্যালি অ্যারে তুলনা এবং ম্যাচের সংখ্যা গণনা করার ক্ষেত্রে (যেমন মেশিন লার্নিংয়ে সঠিক শ্রেণির পূর্বাভাস), আমি দুটি মাত্রার জন্য নীচের উদাহরণটি দরকারী পেয়েছি:
import numpy as np
result = np.random.randint(3,size=(5,2)) # 5x2 random integer array
target = np.random.randint(3,size=(5,2)) # 5x2 random integer array
res = np.equal(result,target)
print result
print target
print np.sum(res[:,0])
print np.sum(res[:,1])
যা ডি মাত্রায় প্রসারিত হতে পারে।
ফলাফলগুলি হ'ল:
প্রেডিক্সন:
[[1 2]
[2 0]
[2 0]
[1 2]
[1 2]]
টার্গেট:
[[0 1]
[1 0]
[2 0]
[0 0]
[2 1]]
ডি = 1 এর জন্য সঠিক পূর্বাভাস গণনা: 1
ডি = 2 এর জন্য সঠিক পূর্বাভাস গণনা: 2