ट्रू या ऑल फाल्स का एक सुरीला एरे कैसे बनाएं?


194

पायथन में, मैं सभी सच्चे या सभी गलत लोगों से भरे मनमाने आकार का एक सुव्यवस्थित सरणी कैसे बना सकता हूं?

जवाबों:


281

सुन्न पहले से ही सभी या सभी शून्य के सरणियों के निर्माण की अनुमति देता है:

जैसे 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)


37
क्या आपने उसी मिनट में अपने प्रश्न का उत्तर दिया था जब प्रश्न पोस्ट किया गया था?
M4rtini

26
@ M4rtini SO आपको एक प्रश्न और एक प्रश्न का उत्तर एक साथ पोस्ट करने की अनुमति देता है।
मिक मैक्लम

1
dtype = int initialized array का उपयोग array element selection के लिए नहीं किया जा सकता है।
जिचाओ

1
यह काम। हालाँकि, सावधान रहें क्योंकि जैसा @Jichao कहते हैं, a=np.ones((2,2))उसके बाद a.dtype=boolकाम नहीं करता है।
मेडले 56

8
अब एक प्रसिद्ध मेम: devhumor.com/media/…
WLGfx

93
numpy.full((2,2), True, dtype=bool)

12
+1 मुझे लगता है कि यह स्वीकृत उत्तर होना चाहिए। यह बूलों के साथ एक सरणी को भरने के लिए अधिक स्वाभाविक लगता है, उन्हें बूल करने के लिए संख्याओं के साथ भरने के लिए।
ज़ेल्फिर कल्टस्टहल

5
onesऔर zerosजवाब पूर्णांकों की एक सरणी का निर्माण नहीं है। वे सीधे बूल की एक सरणी का निर्माण करते हैं।
user2357112

1
है numpy.full((2,2), True)एक बराबर?
पावेल

यह 1.12+ के बराबर है। मुझे याद नहीं है कि यह पूर्व संस्करणों पर लागू होता है या नहीं
fmonegaglia

जब संभव हो तो डेटा से अलग से संग्रहीत किया जाता है? मैं कोई प्रयास कन्वर्ट करने के लिए कर रही है numpy कल्पना नहीं कर सकते int 1करने के लिए bool True
बॉलपॉइंटबैन

30

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)

10

यदि यह लिखने योग्य नहीं है, तो आप इस तरह की एक सरणी बना सकते हैं 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जैसे अन्य जवाब सुझाव देते हैं।


3

जल्दी से एक देखने के लिए दौड़ा, अगर वहाँ 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]]

0
>>> 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 देखें


6
खैर, एक और जवाब पहले से ही उपयोग करने का जवाब दिया np.full- एक वर्ष से अधिक पहले!
MSeifert
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.