NumPy 프로젝트

이 페이지에는 Google Season of Docs에서 승인된 테크니컬 라이팅 프로젝트의 세부정보가 포함되어 있습니다.

프로젝트 요약

오픈소스 조직:
NumPy
테크니컬 라이터:
쿠퍼르크
프로젝트 이름:
커뮤니티 교육을 위한 NumPy 문서
프로젝트 기간:
표준 기간 (3개월)

Project description

소개

NumPy는 무료 오픈소스 소프트웨어 라이브러리에서 깔끔하고 빠른 배열 기반 컴퓨팅을 제공합니다. 이는 과학 컴퓨팅을 위한 SciPy 스택의 기본 패키지입니다[1]. 효율적인 배열 컴퓨팅을 위해 37만 개 이상의 프로젝트가 사용되고 있습니다[2]. NumPy 사용자에게는 애플리케이션과 우수사례[1]가 포함된 새로운 웹사이트가 표시됩니다. 신규 사용자가 문서 페이지를 발견하면 초보자에게는 부담스러울 수 있는 여러 '여기서 시작' 링크와 소개 튜토리얼(예: NumPy 기본 사항/바이트 스와핑)을 보게 됩니다. 저는 10년 전 대학원에서 NumPy를 사용하기 시작했습니다. 블로그 게시물, 강의 노트 및 StackExchange 답변을 정리하면서 NumPy 문서를 살펴보지 않았습니다. 현재 NumPy를 처리하는 StackExchange 대화는 36만 건이 넘습니다. 다른 사용자도 비슷한 방법으로 NumPy를 성공할 수 있었다고 생각합니다. 교육 도구의 기본 요소는 커뮤니케이션과 커뮤니티입니다[4]. 문서에는 프로젝트의 바람직한 목표가 반영된 커뮤니티를 구축해야 합니다. 문서는 신규 사용자를 위한 일관되고 명확한 가이드여야 합니다. 튜토리얼은 신규 사용자가 쉽게 따라할 수 있는 단계를 제공하고 라이브러리를 편안하게 사용할 수 있도록 해야 합니다[3]. 이 문서는 NumPy 커뮤니티에 신규 사용자를 환영해야 합니다. 문서의 구조, 속도, 작성자 모두 탐색과 커뮤니케이션이 가능한 공간을 조성해야 합니다. 이 제안서는 신규 사용자가 커뮤니티에 대한 교육을 받고 환영받을 수 있도록 현재 NumPy 문서의 격차를 정리하고 보완합니다.

사용자가 소통하는 지식은 테스트와 실험을 통해 얻게 됩니다[4,5]. 지식은 테스트 및 평가 방법에 따라 다릅니다. 사용 방법에서 명확한 목표와 응용을 제시하는 콘텐츠를 통해 사용자가 새로운 아이디어와 방법을 테스트하고 평가할 수 있습니다. 커뮤니티는 기술, 사실, 응용 분야를 향상할 수 있는 기술 자료를 구축합니다. 방법이라는 공간에는 두 가지 이점이 있습니다. 첫째, 신규 사용자와 숙련자 모두에게 실험을 테스트하고 구축할 명확한 목표가 있습니다. 둘째, 잠재적 문서 참여자는 자신의 목표, 방법, 솔루션을 전달할 공간이 있습니다. 방법 안내 공간은 신규 사용자와 잠재적 기여자가 NumPy의 문서에 더 쉽게 액세스할 수 있도록 하는 데 필요한 당면한 과제를 충족시킵니다. 현재 지식

존 듀이는 학습의 기초는 진정한 경험이라고 말했습니다[4]. NumPy 커뮤니티는 다른 사용자와 공유할 수 있는 엄청난 양의 진정한 경험을 갖추고 있습니다. 교육은 커뮤니티와 소통을 기반으로 합니다. 잘 정리된 문서 페이지를 통해 신규 사용자가 NumPy를 체험할 수 있습니다. 또한 잠재적 참여자가 NumPy에서 경험을 전달할 수 있도록 구조화된 템플릿을 만듭니다.

소프트웨어 문서는 크게 4개의 그룹으로 묶여 있으며[3] 튜토리얼 공간, 방법 안내 공간, 설명 공간, 참조 공간이 있습니다. NumPy 문서의 튜토리얼 공간에는 설명과 공간 배치 방법 콘텐츠가 혼합되어 있는 여러 문서가 있습니다. 튜토리얼 공간은 사용자 교육에 초점을 맞추고 아이디어를 전달하기 위해 반복하기 쉬운 단계를 사용해야 합니다. 방법 공간에서는 사용자가 실제 응용 프로그램에 적용할 수 있는 보다 목표 지향적인 절차를 제공합니다. 설명 공간은 각 함수의 자세한 doc-string에 대한 자세한 정보를 제공합니다. 현재 튜토리얼과 방법 안내 공간은 명확하게 구분되어 있지 않으며 때때로 설명 및 참고 공간에 들어갈 수 있습니다. '절대 초보자'를 위한 훌륭한 튜토리얼이 있으며, Matlab 사용자가 'Matlab 사용자용 Numpy'에 NumPy 코드를 빌드하는 데 유용한 참고 자료가 있습니다. 이 네 가지 공백을 명확하게 설명하면 문서가 더 명확해집니다.

기술 자료/미충족 니즈의 격차

현재 문서에서는 필요한 여러 주제를 다루지만 튜토리얼, 방법, 설명, 참조 공간이 명확하게 구분되지 않습니다. 이는 잠재적인 참여자들에게 혼란을 야기할 수 있습니다. 신규 사용자는 튜토리얼 섹션에 있는 설명과 참조 자료로 인해 부담을 느낄 수 있으며 잠재적 참여자는 정보를 제공하는 데 어려움을 겪게 됩니다. 문서의 논리적인 흐름과 새 기여자가 작성한 사용 방법 문서의 pull 요청을 관리할 수 있는, 문서 작성자에게 더 쉽게 액세스할 수 있는 레이아웃을 제안합니다. 저의 장기적인 목표는 문서 커뮤니티를 구축하여 문서를 통한 학습이 주고받으며 교육하고 소통하는 경험이 되도록 하는 것입니다. 이 문서화 모델은 신규 사용자와 잠재적 참여자를 위한 실제 경험을 교육하는 토대가 될 것입니다.

근거

Google Summer of Docs 제안서는 교육학 및 커리어 목표를 달성하는 데 중요합니다. 저는 모든 과정에서 NumPy와 SciPy를 사용합니다. 현재 문서를 학생들이 탐색하기 어렵습니다. CS를 전공하지 않는 학생들에게 코딩 방법을 가르치는 경험을 활용하여 현재 튜토리얼에서 배운 내용을 정리 및 편집하고 격차를 메우고 싶습니다. 그러면 문서를 수업의 교과서 및 참고 자료로 사용할 수 있습니다. Python과 을 사용하여 수십 개의 자습서, 연습 및 예제를 만들었습니다. 이 자료의 일부를 튜토리얼과 방법 설명으로 변환하려고 합니다. 저는 800명이 넘는 학생이 Scipy 스택의 일부로 NumPy를 사용했으며, 가을 학기의 문서 참여자로 활동하는 데 관심이 있는 여러 학생이 있습니다. 저는 코네티컷 대학교 기계공학에서 4년간 교직을 맡아 왔으며, 30시간 분량의 과정을 가르쳤습니다.

구체적인 목표

이 Google의 여름 문서(Summer of Docs) 제안서에 대해 세 가지 구체적인 목표가 있습니다. 1. 최신 문서 정리, 2. 현재 튜토리얼 (초보자 가이드, 배열 생성, 색인 생성, 선형 대수, Matlab용 NumPy)을 수정하여 참조 정보를 설명 공간으로 이동합니다. 3. 학생들과 함께 방법 안내 자료를 만듭니다. 각 목표에는 제안서의 예상 결과가 있습니다.

이 세 가지 구체적인 목표는 문서를 신규 사용자가 더 친근하게 만들고 잠재적인 기여자에게 구조를 제공하기 위한 것입니다. 이러한 목표는 NumPy 문서 커뮤니티를 지속적으로 성장시킨다는 장기적인 목표를 이루는 데도 도움이 됩니다. 예상 결과

예상되는 결과는 다음과 같이 세 가지입니다. 1. 튜토리얼, 방법, 설명, 참조, 2. 배열 읽기 및 쓰기, 배열 생성 (np.zeros, np.ones, np.block 등), NumPy의 요소별 대 선형 대수 연산, 3. 선별된 방법 공간 등 4가지 영역을 명확하게 구분하는 수정된 문서 웹페이지

이러한 예상 결과는 신규 사용자가 문서를 살펴보는 데 도움이 되고, 잠재적 문서 기여자에게 명확한 스타일과 형식을 제공하고, 현재 튜토리얼을 더 짧고 이해하기 쉽게 만들고, 설명을 별도의 섹션으로 이동하고, 새로운 문서 참여자는 전체 Sphinx 문서를 작성하지 않고도 방법 섹션에 소규모 사용 사례를 기여할 수 있습니다. Google은 교육 및 학습 커뮤니티를 계속 구축하고자 합니다.

새로운 문서 참여자는 전체 Sphinx 문서를 작성하지 않고도 수백만 명의 사용자에게 소규모 사용 사례를 제공할 수 있습니다. Google은 교육 및 학습 커뮤니티를 계속 구축하고자 합니다. 이 제안된 문서는 매트플롯립, Divio 등과 같은 최신 오픈소스 문서를 모방합니다. 신규 사용자와 잠재적 참여자는 해당 분야와 소프트웨어에 NumPy를 적용하는 방법을 더 쉽게 배울 수 있습니다.

프로젝트 타임라인은 9/14~11/30입니다. 첫 번째 단계는 문서를 빌드하고 현재 튜토리얼의 콘텐츠를 튜토리얼, 방법, 설명 콘텐츠로 분리하는 것입니다. 프로젝트 시작 후 첫 5주 동안 결과 1과 2의 일환으로 웹사이트와 튜토리얼을 각각 수정하는 작업을 수행합니다. 제안된 문서 조직은 아래의 제안된 문서에 나와 있습니다.

제안된 문서:

i.Tutorials:

  • 초보자를 위한 절대적인 기본 사항 (설치 삭제, pandas 가져오기/내보내기를 numpy.loadtxt로 대체할 수 있나요?)
  • 'NumPy란?' 링크
  • 기본 설치 안내 링크
  • 빠른 시작 튜토리얼 (Python 튜토리얼의 후속 작업)
  • NumPy 배열 작업
  • 배열 생성 (np.zeros, np.ones, np.block 등) (쓰기: 중간-낮음 우선순위)
  • 요소별 연산 (+,-,*,/) 및 선형 대수 연산 (+,-,@, linalg.solve) (write:med 우선순위)
  • Numpy를 사용하여 데이터 읽기 및 쓰기 (쓰기: 높은 우선순위)
  • 색인 생성

ii. 방법:

  • N차원 배열의 선형 대수 (제목과 설명을 수정하고 제목을 'Numpy의 선형 대수로 이미지 처리'로 변경하는 것이 좋음)
  • Numpy-tutorials 방법 콘텐츠 링크 (진행 중인 작업)

iii. 설명:

  • 데이터 유형
  • Numpy를 사용한 I/O
  • 색인 생성
  • 방송 중
  • 바이트 스와핑
  • 구조화된 배열
  • 커스텀 배열 컨테이너 작성
  • ndarray 서브클래스 생성
  • 기타

iv. 참조 공간:

  • 용어 설명
  • Numpy API 참조
  • Matlab 사용자를 위한 Numpy (동등한 테이블은 훌륭한 참조 테이블이지만 배열/매트릭스 논의는 산만하고 지원 중단된 것 같음)

이번 Google 문서 시즌을 마친 후 저는 다음과 같은 결과를 제안합니다.

  • 튜토리얼, 방법, 설명, 참조의 4가지 공간을 명확하게 구분하도록 문서 웹페이지를 수정했습니다.
  • 새로운 튜토리얼: 배열 만들기 (np.zeros, np.ones, np.block 등), 요소별 연산 (+,-,*,/), 선형 대수 연산 (+,-,@, linalg.solve), Numpy를 사용한 데이터 읽기 및 쓰기 (높은 우선순위)
  • 사용자 참여를 늘리고 교육 및 학습에 있어 커뮤니티의 목표를 달성하는 데 도움이 되는 방법 문서 권장

각 결과에는 결과 1~3의 표에 요약된 여러 단계가 있습니다. 검토를 위해 제안된 문서를 제출하는 동안, 결과 2의 일부로 우선순위가 높은 '배열 읽기/쓰기' 튜토리얼이 pull 요청으로 제출되도록 작성됩니다. 수정된 웹사이트와 업데이트된 '배열 읽기/쓰기' 튜토리얼을 검토하면서 NumPy 함수(예: np.ones, np.zeros, np.diag)를 사용하여 배열을 만드는 튜토리얼을 작성하기 시작할 것입니다. 남은 시간은 pull 요청 문제에 응답하고 랭크 3 튜토리얼(Python의 요소별 및 선형 대수 연산) 작성을 시작하는 데 사용됩니다.

세 번째 결과는 코네티컷 대학교의 학생들에게 Numpy-tutorials 저장소에 문서를 작성하라고 권하는 것입니다. 제출된 튜토리얼 또는 방법 문서는 NumPy를 사용하여 엔지니어링 문제를 해결하는 Jupyter 노트북입니다. 학습과정 노트/예시를 사용해 예시 노트를 제출하겠습니다. 저는 학생들에게 템플릿과 프레이밍 방식을 만들 때 레이아웃과 구조를 따르도록 권할 것입니다. 이러한 결과는 학생들이 더 넓은 청중에게 개념과 해결책을 제대로 전달할 수 있는 진정한 경험을 제공합니다. 학생들이 NumPy 커뮤니티에 참여하여 배울 수 있는 좋은 기회입니다.

결과 1: 웹사이트 결과물 날짜 수정 Sphinx 9월 21일 포크 저장소 및 문서 빌드 10월 1일 4개의 스페이스가 정의되고 연결된 웹페이지 구축 현재 튜토리얼을 적절한 공간으로 이동 및 문서 작성 10월 10일 11월 1일 변경사항 제안에 대해 GitHub에 PR을 제출 11월 1일 수정된 의견/제안에 응답 및 수정된 웹사이트 20 PR 진행 중 PR 1

결과 2: 튜토리얼 수정 결과 날짜 검토 튜토리얼 버전 순위 9/21 현재 가이드 콘텐츠를 튜토리얼 및 설명 공간으로 구분 10/1 순위 1: 배열 읽기/쓰기 10/10 분리 및 버전 10/20을 위해 github에 PR 제출 순위 2: 배열/순위 작업 1/순위 1/순위 3 요소별 작성: 1/1-순위 PR 1

튜토리얼 버전 추천 순위 (멘토/커뮤니티에 따라 변경될 수 있음):

  1. 현재 비어 있는 페이지 읽기/쓰기

  2. 배열 생성 (np.zeros, np.ones, np.block 등) 존재하지 않음: 신규 사용자가 일반적인 배열 생성/상호작용 도구를 설명하고 시연하는 데 도움이 됨

  3. 요소별 및 선형 대수 연산 (+,-,*,/ 및 +,-@,linalg.solve)이 존재하지 않습니다. 이는 특히 1에 유용합니다. Matlab 사용자 2. 선형 대수학 (머신러닝, 선형 회귀 등)을 배우는 사람

결과 3: 선별된 방법 공간 제공일 외부 링크(문제/예) 방법 예시 작성 (후보: 기타 문자열의 자연스러운 주파수를 찾는 방법 10/20
새 참여자를 위한 방법 템플릿 제작 10월 1일 진행 중) 튜토리얼 템플릿 PR 및 프레이밍 다른 참여자와 협력하여 U-to 노트북 작성 및 다른 참여자 모집 - 다른 참여자와 협력하여 방법 노트북 작성 및 승인 7

예상되는 유의성

이번 Google Summer of Docs 제안서는 NumPy 문서 를 만들고 , 웹사이트에서 누락된 튜토리얼을 작성하고, 문서 참여자를 확보합니다. 저는 기계 공학 교수로서 학생들이 문서를 탐색하고 입문 튜토리얼과 실습 안내 가이드를 쉽게 찾을 수 있는 방식으로 문서를 분류하려고 합니다. 튜토리얼, 방법, 참조, 설명 등 상세한 문서를 통해 잠재적 기여자는 구조화된 예시를 통해 새 리소스를 빌드할 수 있습니다. 제안된 문서는 신규 및 기존 사용자에게 교육 및 커뮤니케이션 경험을 통한 주고받기에 적합합니다. 코네티컷 대학교 학생들과 함께 지도하는 방법 문서 제안은 이러한 교육 및 커뮤니케이션 아이디어를 실행에 옮길 것입니다. Google은 모든 사용자가 실험하고, 배우고, NumPy 커뮤니티에 참여할 수 있는 공간을 마련하고자 합니다.

참조

  1. 2020년 7월 NumPy.org 웹사이트에 액세스
  2. NumPy GitHub 저장소
  3. 문서화 시스템. Divio.com에서 2020년 7월에 액세스함
  4. 듀이, 존. 민주주의와 교육. 프로젝트 구텐베르크, 2015년 8월.
  5. 듀이, 존. 확실티 조지 앨런과 언윈을 위한 퀘스트입니다. 2005년 6월