본문 바로가기
파이썬

파이썬 TypeError : 정수 스칼라 배열 만 1D numpy 인덱스 배열을 사용하여 스칼라 인덱스로 변환 할 수 있습니다.

by º기록 2020. 10. 11.
반응형

제공된 bin 확률 을 기반으로 학습 세트에서 요소를 무작위로 선택하는 함수를 작성하고 싶습니다. 저는 세트 인덱스를 11 개의 빈으로 나눈 다음 맞춤 확률 을 만듭니다.

bin_probs = [0.5, 0.3, 0.15, 0.04, 0.0025, 0.0025, 0.001, 0.001, 0.001, 0.001, 0.001]

X_train = list(range(2000000))

train_probs = bin_probs * int(len(X_train) / len(bin_probs)) # extend probabilities across bin elements
train_probs.extend([0.001]*(len(X_train) - len(train_probs))) # a small fix to match number of elements
train_probs = train_probs/np.sum(train_probs) # normalize
indices = np.random.choice(range(len(X_train)), replace=False, size=50000, p=train_probs)
out_images = X_train[indices.astype(int)] # this is where I get the error

다음과 같은 오류가 발생합니다.

TypeError: only integer scalar arrays can be converted to a scalar index with 1D numpy indices array

내가 만든 인덱스 배열을 이미 확인했기 때문에 이상합니다. 1-D 이고 정수 이며 스칼라 입니다.

내가 무엇을 놓치고 있습니까?

참고 : astype (int) indices 를 전달하려고했습니다. 같은 오류입니다.

 

해결 방법

 

아마도 오류 메시지가 다소 오해의 소지가 있지만 요점은 X_train 이 numpy 배열이 아니라 목록이라는 것입니다. 배열 인덱싱을 사용할 수 없습니다. 먼저 배열로 만드십시오.

out_images = np.array(X_train)[indices.astype(int)]

 

참조 페이지 https://stackoverflow.com/questions/50997928

 

 

반응형

댓글