2017-10-16 1 views
0

정수 값에 문자를 매핑해야하는 numpy ndarrays가 포함 된 매우 큰 목록 목록이 있습니다.numpy ndarray의 값 바꾸기

이것은 내가 생각했던 라인을 따르지만 모든 어레이를 잡아 내지는 않는 것 같습니다.

import numpy as np 

x = [np.array(['a','b','c']),np.array(['d','e']),np.array(['a','e'])] 
dict_x = {'a': 1, 'b': 2, 'c': 3, 'd': 4, 'e':5} 

x[ x == 'a'] = dict_x.get('a') 

Output: [1, array(['d', 'e'], 
    dtype='<U1'), array(['a', 'e'], 
    dtype='<U1')] 

또한 다음

for i in dict_x.keys(): 
    x[ x == i] = dict_x.get(i) 

하나에 의해 배열 하나에 장착하기 위해 모든 키를 반복하려고했지만이 내가 의미가 생각하는 반환합니다. 누구든지 이러한 모든 값을 모든 인스턴스에서 즉시 대체 할 수있는 영리한 방법이 있습니까? 매우 감사합니다!

[5, array(['d', 'e'], 
    dtype='<U1'), array(['a', 'e'], 
    dtype='<U1')] 

답변

1

이 작업을 시도 할 수 있습니다 :

x = [np.array(['a','b','c'], dtype="<U4"),np.array(['d','e'], dtype="<U4"),np.array(['a','e'], dtype="<U4")] 
dict_x = {'a': 1, 'b': 2, 'c': 3, 'd': 4, 'e':5} 

for i in x: 
    i[ i == 'a'] = dict_x.get('a') 

x = array(['1', 'b', 'c'], 
     dtype='<U1'), array(['d', 'e'], 
     dtype='<U1'), array(['1', 'e'], 
     dtype='<U1')] 
+0

예 - 정확히. 방금 외부 루프로 사전에있는 모든 키를 반복하는 루프를 만든 다음 'a'가있는 변수를 사용하여 내부 루프로 설정합니다. 나는 한 번에 모두를 대체하기를 바랐다. 그러나 나는 아직도 O (n)이어야한다고 생각한다. 그래서 나는 해를 끼치 지 않는다고 생각한다. 감사! – user6142489

+0

방금 ​​입력 한 번호가 하나의 숫자로 자릅니다. 그래서, 1000은 1로 읽습니다. 어떤 아이디어입니까? – user6142489

+0

배열의 dtype이 '

관련 문제