빈 배열을 먼저 초기화 할 필요없이 직사각형 영역을 마스크하여 배열을 생성 할 수 있습니까?Numpy : 마스크 배열을 만들어 사각형을 선택하십시오
mask = np.zeros((10,10), dtype=bool)
mask[10/2:,10/2:] = True
임이 두 줄을 교체 한 줄에서 수행 할 수 있습니다 mask
빈 배열을 먼저 초기화 할 필요없이 직사각형 영역을 마스크하여 배열을 생성 할 수 있습니까?Numpy : 마스크 배열을 만들어 사각형을 선택하십시오
mask = np.zeros((10,10), dtype=bool)
mask[10/2:,10/2:] = True
임이 두 줄을 교체 한 줄에서 수행 할 수 있습니다 mask
생성하는 것 인 NumPy와 표현을 찾고 :
mask = np.fromfunction(lambda i, j: (i >= 5) * (j >= 5), (10, 10), dtype=int)
그러나이 밝혀이 꽤 될 원래 구현보다 느립니다. (행과 열 인덱스를 포함하는 두 개의 배열을 만듭니다).
배열을 초기화하고 값을 수동으로 설정하지 않으려면 np.empty
을 사용할 수 있습니다. 그러나이 특별한 경우에는 np.zeros
또는 np.ones
을 사용하는 것이 더 나을 것입니다. 그리고 업데이트해야하는 항목 중 가장 작은 수의 값을 전환하십시오.
정말로 한 라이너를 갖고 싶다면 가능한 방법입니다. 하지만 원래 코드가 더 깨끗하고 선명하며 전반적으로 더 낫다고 말할 수 있습니다 ...
>>> np.logical_and.outer(np.arange(10) >= 5, np.arange(6) >= 3)
array([[False, False, False, False, False, False],
[False, False, False, False, False, False],
[False, False, False, False, False, False],
[False, False, False, False, False, False],
[False, False, False, False, False, False],
[False, False, False, True, True, True],
[False, False, False, True, True, True],
[False, False, False, True, True, True],
[False, False, False, True, True, True],
[False, False, False, True, True, True]], dtype=bool)