파이썬에서 모든 True 또는 All False로 채워진 임의의 모양의 numpy 배열을 어떻게 만듭니 까?
답변
numpy는 이미 모든 1 또는 0으로 구성된 배열을 매우 쉽게 만들 수 있습니다.
예 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)
업데이트 : 2013 년 10 월 30 일
numpy 버전 1.8 이후 , full
fmonegaglia가 지적한 것처럼 의도를보다 명확하게 보여주는 구문으로 동일한 결과를 얻는 데 사용할 수 있습니다 .
numpy.full((2, 2), True, dtype=bool)
업데이트 : 2017 년 1 월 16 일
최소한 numpy 버전 1.12 이후 full
자동으로 결과를 dtype
두 번째 매개 변수 중 하나로 캐스팅하므로 다음 과 같이 쓸 수 있습니다.
numpy.full((2, 2), True)
답변
numpy.full((2,2), True, dtype=bool)
답변
ones
및 zeros
각각 1과 0으로 가득 찬 배열을 생성하는 선택적 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을 확인 하십시오.