Python'da, tüm True veya all False ile dolu bir dizi rasgele şekil nasıl oluştururum?
Python'da, tüm True veya all False ile dolu bir dizi rasgele şekil nasıl oluştururum?
Yanıtlar:
numpy zaten hepsinin veya tüm sıfırların dizilerinin kolayca oluşturulmasına izin veriyor:
örneğin numpy.ones((2, 2))veyanumpy.zeros((2, 2))
Yana Trueve Falsesıra Python temsil edilir 1ve 0sırasıyla biz opsiyonel kullanarak boole olmalıdır bu diziyi belirtmek için sadece var dtypeparametreyi ve işlem tamamdır.
numpy.ones((2, 2), dtype=bool)
İadeler:
array([[ True, True],
[ True, True]], dtype=bool)
GÜNCELLEME: 30 Ekim 2013
Numpy sürüm 1.8'den bu yana , fullniyetimizi daha net bir şekilde gösteren sözdizimi ile aynı sonucu elde etmek için kullanabiliriz (fmonegaglia'nın belirttiği gibi):
numpy.full((2, 2), True, dtype=bool)
GÜNCELLEME: 16 Ocak 2017
En az numpy sürüm 1.12 olduğundan , fullsonuçları dtypeikinci parametreye otomatik olarak verir , böylece şunu yazabiliriz:
numpy.full((2, 2), True)
a=np.ones((2,2))onu takip a.dtype=boolETMEZ.
numpy.full((2,2), True, dtype=bool)
onesVe zeroscevaplar Sayı dizisi inşa yoktur. Doğrudan bir dizi bools inşa ediyorlar.
numpy.full((2,2), True)eşdeğer?
int 1için ağır bir kaldırma yaptığını hayal edemiyorum bool True.
ones ve zeros sırasıyla bunlarla ve sıfırlarla dolu diziler oluşturan isteğe bağlı bir dtypeparametre alır:
>>> 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)
Yazılabilir olması gerekmiyorsa, böyle bir dizi oluşturabilirsiniz 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)
Yazılabilir olması gerekiyorsa, boş bir dizi ve fillkendiniz de oluşturabilirsiniz :
>>> arr = np.empty((2, 5), dtype=bool)
>>> arr.fill(1)
>>> arr
array([[ True, True, True, True, True],
[ True, True, True, True, True]], dtype=bool)
Bu yaklaşımlar sadece alternatif önerilerdir. Genel olarak sopa ile gereken np.full, np.zerosya da np.onesdiğer cevaplar önermek gibi.
np.fullVe arasında herhangi bir fark varsa hızlıca bir timeit koştunp.ones sürümü .
Yanıt: Hayır
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")
Sonuç:
np.ones: 0.38416870904620737s
np.full: 0.38430388597771525s
ÖNEMLİ
Hakkında yazı hakkında np.empty(ve itibarım çok düşük olduğu için yorum yapamam):
BUNU YAPMAYIN. Tüm diziyi np.emptybaşlatmak için KULLANMAYINTrue
Dizi boş olduğundan, bellek yazılmaz ve garanti yoktur, değerlerinizin ne olacağı, ör.
>>> 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 (Boyut, Skaler Değer, Tür). Aktarılabilecek başka argümanlar da var, bununla ilgili belgeler için https://docs.scipy.org/doc/numpy/reference/generated/numpy.full.html adresini ziyaret edin.
np.full- bir yıldan fazla önce cevap !