[python] numpy array에 리스트 추가하기

heodh의 이미지

아래와 같이 n은 3X6 리스트 입니다. 제가 하고 싶은 것은 각 row에서 첫 3개 원소를 wt에 저장하고 나머지 3개 원소를 mt에 numpy의 array(3X3)로 저장하고 싶습니다.

>>> n
[[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로 만들어서 추가하고 싶습니다.

>>> n
[[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입니다.

>>> n_arr=np.array(n)
>>> 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문으로 하나씩 더해가는 것보다 더 효과적인 방법을 찾고 있습니다.

>>> wt2
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를 쓰면 될 것 같네요.

wt = np.fromiter((j for i in n for j in i[:3]), np.int32, 9).reshape(3,3)

댓글 달기

Filtered HTML

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.

BBCode

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param>
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.

Textile

  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • You can use Textile markup to format text.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>

Markdown

  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • Quick Tips:
    • Two or more spaces at a line's end = Line break
    • Double returns = Paragraph
    • *Single asterisks* or _single underscores_ = Emphasis
    • **Double** or __double__ = Strong
    • This is [a link](http://the.link.example.com "The optional title text")
    For complete details on the Markdown syntax, see the Markdown documentation and Markdown Extra documentation for tables, footnotes, and more.
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>

Plain text

  • HTML 태그를 사용할 수 없습니다.
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
  • 줄과 단락은 자동으로 분리됩니다.
댓글 첨부 파일
이 댓글에 이미지나 파일을 업로드 합니다.
파일 크기는 8 MB보다 작아야 합니다.
허용할 파일 형식: txt pdf doc xls gif jpg jpeg mp3 png rar zip.
CAPTCHA
이것은 자동으로 스팸을 올리는 것을 막기 위해서 제공됩니다.