[python] numpy array에 리스트 추가하기
아래와 같이 n은 3X6 리스트 입니다. 제가 하고 싶은 것은 각 row에서 첫 3개 원소를 wt에 저장하고 나머지 3개 원소를 mt에 numpy의 array(3X3)로 저장하고 싶습니다.
즉
[[1, 2, 3, 4, 5, 6], [11, 12, 13, 14, 15, 16], [21, 22, 23, 24, 25, 26]]
#즉 이렇게 하고 싶습니다.
#wt은 array([[1,2,3], [11,12,13], [21,22,23]]) 이렇게 3*3
#mt의 경우 array([[4,5,6], [14,15,16], [24,25,26]]) 이렇게 3*3
그냥 파이썬 기본 리스트를 가지고 wt, mt를 작성한 후 그 결과를 numpy array로 변경하면 가능하나 저는 처음부터 array로 만들어서 추가하고 싶습니다.
[[1, 2, 3, 4, 5, 6], [11, 12, 13, 14, 15, 16], [21, 22, 23, 24, 25, 26]]
>>> wt=[]
>>> mt=[]
>>> for i in n:
... wt.append(i[:3])
... mt.append(i[3:])
...
>>> wt
[[1, 2, 3], [11, 12, 13], [21, 22, 23]]
>>> mt
[[4, 5, 6], [14, 15, 16], [24, 25, 26]]
>>> np.array(wt)
array([[ 1, 2, 3],
[11, 12, 13],
[21, 22, 23]])
아래와 같이 시도 했습니다. 결과는 3*3 array가 아니라 1*9 array입니다.
>>> for i in n_arr:
... wt_arr=np.append(wt_arr, i[:3])
... mt_arr=np.append(mt_arr, i[3:])
...
>>> wt_arr
array([ 1., 2., 3., 11., 12., 13., 21., 22., 23.])
>>> mt_arr
array([ 4., 5., 6., 14., 15., 16., 24., 25., 26.])
>>>
분명 방법이 있을 것 같은데, 검색을 어떻게 해야할지 모르겠습니다.
또하나, 아래와 같이 3*3 array가 있다고 할때 (사실 제가 다루게 될 데이터는 약 6000 * 100 입니다.
각 컬럼들의 합, 평균, 표준편차 등을 구할 쉬운 방법이 있을까요?
for문으로 하나씩 더해가는 것보다 더 효과적인 방법을 찾고 있습니다.
array([[ 1, 2, 3],
[11, 12, 13],
[21, 22, 23]])
# 합 결과를 리스트 형태로 [33, 36, 39] 이렇게 얻고 싶습니다.
두 번째 질문에 한하여 답을 찾았습니다.
두 번째 질문에 한하여 답을 찾았습니다.
혹시나 하여 링크 걸어둡니다.
https://stackoverflow.com/questions/13567345/how-to-calculate-the-sum-of-all-columns-of-a-2d-numpy-array-efficiently
첫번째는 generator를 쓰면 될 것 같네요.
첫번째는 generator를 쓰면 될 것 같네요.
wt = np.fromiter((j for i in n for j in i[:3]), np.int32, 9).reshape(3,3)
댓글 달기