2014-07-07 2 views
1

파이썬에서이 배열을 가지고 있습니다. p로 ​​끝나는 행을 새로운 배열로 추출하고 싶습니다.영숫자 배열에서 파이썬으로 행 추출하기

array([[ 0, 6, p], 
     [ 1, 7, m], 
     [ 2, 10, m], 
     [ 3, 4, p], 
     [ 4, 1, m], 
     [ 5, 10, p], 
     [ 6, 6, m], 
     [ 7, 4, m], 
     [ 8, 6, p], 
     [ 9, 7, p]]) 
+0

을 가지고 같은 NumPy와 부울 인덱스를 사용하는 것입니다 : 여기

는 필터 함수에 대한 참조입니다 이 코드를 직접 만들려고 했습니까? 그렇다면 공유 할 수 있습니까? – Ffisegydd

+0

은 실제로''p'''p''입니까? –

+0

'p'는 당신이 정의한 정수형 변수인가요? – user2357112

답변

-1

이것은 매우 쉽게 파이썬입니다.

당신은 다만 할 수 있습니다

p = array[SOME_RANDOM_CELL]; 
print p[0] 
+0

NumPy 질문이므로 루프없는 방식으로 마지막 요소로'p'를 가진 모든 행을 추출하는 방법을 찾고 있습니다. 개별 요소를 검색하기위한 인덱싱은 쉽습니다. – user2357112

+0

아, 미안하다. 이 사이트에 처음 오르고 태그를 보는 습관이 아닙니다. – DTSCode

1

당신은이 문제를 해결하기 위해 필터를 사용할 수 있습니다.

data = [ 
    [ 0, 6, "p"], 
    [ 1, 7, "m"], 
    [ 2, 10, "m"], 
    [ 3, 4, "p"], 
    [ 4, 1, "m"], 
    [ 5, 10, "p"], 
    [ 6, 6, "m"], 
    [ 7, 4, "m"], 
    [ 8, 6, "p"], 
    [ 9, 7, "p"] 
] 

new_data = filter(lambda l: l[2] == "p", data) 

위의 구조는 그러나 동일한 튜플 및 사전에 신청해야,리스트의리스트 (배열의 배열)를 처리하는 것으로 가정합니다. 이 https://docs.python.org/2/library/functions.html#filter

+0

우리는 목록, 튜플 또는 사전을 다루지 않습니다. 우리는 NumPy 배열을 다루고 있습니다. 'filter'는 느리고 목록을 반환합니다; 우리는 NumPy 솔루션을 원합니다. – user2357112

+0

@ user2357112 분명히 그는 목록을 사용하고 있습니다 .... (내 대답에 대한 의견보기) –

+0

그는 그렇습니다. 이 대답은 좀 더 합리적입니다. (필자는'filter'보다는 list comprehension을 원합니다.) 불행히도 내 표결이 잠겨 있습니다. – user2357112

2

쉬운 방법은

a = numpy.array(a) # ensure its a numpy array 
print a[a[:,-1]=="p"] 

그것을 무너 뜨리는 아래

mask = a[:,-1]=="p" #gives an array of True/False that is the same as the array, based on if last char is "p" 
a[mask] #indexes into the original array returning only the rows that end with "p" 
+0

원래의 배열은리스트 함수로 읽혀지고, 이것을 시도 할 때 TypeError를 얻습니다 :리스트 인덱스는 터플이 아닌 정수 여야합니다 – Josh

+1

왜 numpy인지 태그를 붙였습니까? ... 어쨌든 numpy 배열로 편집되었습니다 ... –

+0

newarray = a [np.where (a [:, - 1] == "p")]로 작업 할 수있게되었습니다. 이것은 numpy 어레이 array1 = np.asarray (listreadversion)로 변환 한 후였습니다. – Josh

관련 문제