जवाबों:
सुन्न पहले से ही सभी या सभी शून्य के सरणियों के निर्माण की अनुमति देता है:
जैसे numpy.ones((2, 2))
याnumpy.zeros((2, 2))
के बाद से True
और False
अजगर में प्रतिनिधित्व कर रहे हैं के रूप में 1
और 0
, क्रमशः, हम केवल वैकल्पिक का उपयोग कर बूलियन होना चाहिए इस सरणी में बताने की dtype
पैरामीटर और हम किया जाता है।
numpy.ones((2, 2), dtype=bool)
रिटर्न:
array([[ True, True],
[ True, True]], dtype=bool)
अद्यतन: 30 अक्टूबर 2013
1.8 संस्करण के बाद से , हम full
सिंटैक्स के साथ एक ही परिणाम प्राप्त करने के लिए उपयोग कर सकते हैं जो अधिक स्पष्ट रूप से हमारे इरादे को दर्शाता है (जैसा कि fmonegaglia बताते हैं):
numpy.full((2, 2), True, dtype=bool)
अद्यतन: 16 जनवरी 2017
कम से कम संख्यात्मक संस्करण 1.12 के बाद से , full
स्वचालित रूप dtype
से दूसरे पैरामीटर के परिणाम सामने आते हैं , इसलिए हम बस लिख सकते हैं:
numpy.full((2, 2), True)
a=np.ones((2,2))
उसके बाद a.dtype=bool
काम नहीं करता है।
numpy.full((2,2), True, dtype=bool)
ones
और zeros
जवाब पूर्णांकों की एक सरणी का निर्माण नहीं है। वे सीधे बूल की एक सरणी का निर्माण करते हैं।
numpy.full((2,2), True)
एक बराबर?
int 1
करने के लिए bool True
।
ones
और zeros
, जो क्रमशः एरो और शून्य से भरा एरे बनाते हैं, एक वैकल्पिक dtype
पैरामीटर लेते हैं :
>>> numpy.ones((2, 2), dtype=bool)
array([[ True, True],
[ True, True]], dtype=bool)
>>> numpy.zeros((2, 2), dtype=bool)
array([[False, False],
[False, False]], dtype=bool)
यदि यह लिखने योग्य नहीं है, तो आप इस तरह की एक सरणी बना सकते हैं np.broadcast_to
:
>>> import numpy as np
>>> np.broadcast_to(True, (2, 5))
array([[ True, True, True, True, True],
[ True, True, True, True, True]], dtype=bool)
अगर आपको यह लिखने योग्य है तो आप एक खाली सरणी भी बना सकते हैं और fill
इसे स्वयं:
>>> arr = np.empty((2, 5), dtype=bool)
>>> arr.fill(1)
>>> arr
array([[ True, True, True, True, True],
[ True, True, True, True, True]], dtype=bool)
ये दृष्टिकोण केवल वैकल्पिक सुझाव हैं। सामान्य तौर पर आप के साथ रहना चाहिए np.full
, np.zeros
या np.ones
जैसे अन्य जवाब सुझाव देते हैं।
जल्दी से एक देखने के लिए दौड़ा, अगर वहाँ np.full
और np.ones
संस्करण के बीच कोई मतभेद हैं ।
उत्तर: नहीं
import timeit
n_array, n_test = 1000, 10000
setup = f"import numpy as np; n = {n_array};"
print(f"np.ones: {timeit.timeit('np.ones((n, n), dtype=bool)', number=n_test, setup=setup)}s")
print(f"np.full: {timeit.timeit('np.full((n, n), True)', number=n_test, setup=setup)}s")
परिणाम:
np.ones: 0.38416870904620737s
np.full: 0.38430388597771525s
जरूरी
पोस्ट के बारे में np.empty
(और मैं टिप्पणी नहीं कर सकता, क्योंकि मेरी प्रतिष्ठा बहुत कम है):
यह मत करो। np.empty
एक सभी True
सरणी को इनिशियलाइज़ करने के लिए उपयोग न करें
जैसा कि सरणी खाली है, मेमोरी लिखी नहीं गई है और कोई गारंटी नहीं है, आपके मान क्या होंगे, उदा
>>> print(np.empty((4,4), dtype=bool))
[[ True True True True]
[ True True True True]
[ True True True True]
[ True True False False]]
>>> a = numpy.full((2,4), True, dtype=bool)
>>> a[1][3]
True
>>> a
array([[ True, True, True, True],
[ True, True, True, True]], dtype=bool)
numpy.full (आकार, स्केलर मान, प्रकार)। अन्य तर्क भी हैं जिन्हें पारित किया जा सकता है, उस पर प्रलेखन के लिए, https://docs.scipy.org/doc/numpy/reference/generated/numpy.full.html देखें
np.full
- एक वर्ष से अधिक पहले!