2016-06-09 2 views
3

나는 파이썬에서 600 개의 소행성 측정 (지름,주기, 궤도 반지름)의 배열을 가진 프로젝트를하고 있습니다. 그 정보를 가지고 직경 열에 따라 새로운 배열을 만들고 싶습니다. 결과 배열은 첫 번째 배열의 직경 간격이됩니다. 그것의 정보에 따라 배열을 나눕니다.

내가이 배열이있는 경우

,

diameter   period   orbit radius 
[[ 19.17   5.71476129 3.19639121] 
[ 19.28   4.81234455 2.85035536] 
[ 22.77   5.62890294 3.16429553] 
[ 4.8   3.29145453 2.21268592] 
[ 7.23   2.61331495 1.89724041] 
[ 8.17   2.54935585 1.86615697] 
[ 260.94   6.49151957 3.47983602] 
[ 530.   3.62867648 2.3613482 ] 
[ 952.4   4.60562864 2.76813421]] 

내가 그냥 필터링 지능형리스트를 사용하여 20

diameter   period   orbit radius 
[[ 19.17   5.71476129 3.19639121] 
[ 19.28   4.81234455 2.85035536] 
[ 4.8   3.29145453 2.21268592] 
[ 7.23   2.61331495 1.89724041] 
[ 8.17   2.54935585 1.86615697]] 
+0

팬더 데이터 프레임에 데이터를로드하면 'df'라고 표시됩니다. 결과는 df [df [ "diameter"] <20]' – Eular

+0

입니다. 데이터가 행/열 형식 인 것으로 보입니다. [pandas] (http://pandas.pydata.org)를 살펴볼 것을 적극 권장합니다. – SethMMorton

답변

1

numpy 배열의 색인 속성을 사용하여 새 배열을 쉽게 만들 수 있습니다.이 배열은 그 하나의 라이너로 변환됩니다.

filtered_arr = arr[(arr[:,0]<=20)*(arr[:,0]>=0),:] 

또는 개발 :

#we separate the diameters from the rest 
diameter_column= arr[:,0] 
#we create a (1D) bool array that match diameter between 0 and 20 
diameter_filter=(diameter_column<=20) * (diameter_column>=0) 
#we use the boolean array as an index to select the right asteroids 
filtered_arr=arr[diameter_filter,:] 
4

0에서 직경 배열을하고 싶습니다 그것을

filtered = [ ast for ast in arr if ast[0]<=20 ] 
1

당신이, 당신이 조건에 일치하는 numpy.where를 사용할 수 numpy를 사용하여 필요한 매트릭스를 달성 한 후 인덱스에 사용할 수있는 마스크를 적용하고자하는 가정 배열을 사용하여 필요한 값을 가져옵니다. 여기

>>>arr[np.where(arr[:, 0] < 20)] 

[[ 19.17   5.71476129 3.19639121] 
[ 19.28   4.81234455 2.85035536] 
[ 4.8   3.29145453 2.21268592] 
[ 7.23   2.61331495 1.89724041] 
[ 8.17   2.54935585 1.86615697]] 

, np.where(arr[:, 0] < 20) 검사 어레이의 첫번째 컬럼 및 이후 원래의 배열을 슬라이스하는데 사용될 것이다 양호한 일치의 행의 인덱스를 반환한다.

관련 문제