본문 바로가기
  • Hello_
Python/Error

[Python_Error] ValueError: zero-size array to reduction operation maximum which has no identity

by LDwDL 2023. 1. 25.
728x90
반응형

본 포스팅에서는 업무 중 발생했던 오류들을 예시를 통해 어떻게 해결을 하는지 작성하고자 한다.

 

ValueError: zero-size array to reduction operation maximum which has no identity

해당 오류는 비어있는 array를 np.max 혹은 np.min을 사용하여 발생했던 오류이다.

 

Error

 

[예시]

오류가 발생한 코드와 유사하게 예시를 만들어보았다.

import numpy as np

mask = np.array([[1,2],[3,4]])
zz = np.where(mask == 5)[0]

print((zz.max() + zz.min()) / 2.)

"""
ValueError Traceback (most recent call last) /aidata/lung/WORKSPACE/workspace_s/deep-lung-ln-02_v2/nodulenet/_.ipynb Cell 
3 in <cell line: 5>() 3 m = np.array([[1,2],[3,4]]) 4 zz = np.where(m == 5)[0] ----> 5 (zz.max() + zz.min()) / 2. File ~/.conda/envs/soobumk/lib/python3.9/site-packages/numpy/core/_methods.py:40, 
in _amax(a, axis, out, keepdims, initial, where) 38 def _amax(a, axis=None, out=None, keepdims=False, 39 initial=_NoValue, where=True): ---> 40 
return umr_maximum(a, axis, None, out, keepdims, initial, where) 

ValueError: zero-size array to reduction operation maximum which has no identity
"""

 

m이라는 배열에 특정 값을 찾기 위해 np.where을 했지만, 값이 존재하지 않아 zz는 빈 배열로 선언이 되었다.

이때, zz의 중간값을 구하기 위해 최댓값과 최솟값을 산출해야하지만 오류가 발생한다.

 

[해결]

 

위 예시는 5가 아닌 m 배열에 있는 3을 찾아주어 zz가 값이 있는 배열로 구성시켜주니 오류가 발생하지 않았다.

 

필자의 코드에서 해결한 방법은 그냥 주체가 되는 배열의 값을 잘 확인해서 있는 값을 찾거나 예외처리를 해주었다.

 

 

 

 

728x90
반응형

댓글