NumPy 프로젝트

이 페이지에는 Google Season of Docs에 선정된 기술 문서 프로젝트의 세부정보가 포함되어 있습니다.

프로젝트 요약

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

Project description

소개

NumPy는 무료 오픈소스 소프트웨어 라이브러리에서 깔끔하고 빠른 배열 기반 컴퓨팅을 제공합니다. 과학 컴퓨팅을 위한 SciPy 스택의 기본 패키지입니다[1]. 37만 개가 넘는 프로젝트에서 효율적인 배열 컴퓨팅에 사용하고 있습니다[2]. NumPy 사용자에게 애플리케이션과 우수사례를 소개하는 새 웹사이트가 열립니다[1]. 신규 사용자가 문서 페이지를 찾으면 NumPy 기초/바이트 교환과 같이 초보자에게는 부담이 될 수 있는 여러 '시작하기' 링크와 입문 튜토리얼이 표시됩니다. 저는 10년 전 대학원에서 NumPy를 사용하기 시작했습니다. NumPy 문서를 다 보지 않기 위해 블로그 게시물, 강의 노트, StackExchange 답변을 찾게 되었어요. 현재 NumPy를 다루는 StackExchange 대화는 36만 개가 넘습니다. 다른 사용자도 NumPy에서 유사한 경로를 통해 성공을 거둔 것으로 보입니다. 교육 도구의 구성요소는 커뮤니케이션과 커뮤니티입니다[4]. 문서는 프로젝트의 목표를 반영하는 커뮤니티를 구축해야 합니다. 문서는 신규 사용자를 위한 일관되고 명확한 가이드여야 합니다. 튜토리얼은 신규 사용자에게 따라하기 쉬운 단계를 제공하고 라이브러리에 익숙해지도록 해야 합니다[3]. 문서에서는 신규 사용자를 NumPy 커뮤니티에 환영해야 합니다. 문서의 구조, 속도, 작성자 모두 탐색과 소통을 장려하는 공간을 만들어야 합니다. 이 제안서에서는 신규 사용자가 커뮤니티에 참여할 수 있도록 현재 NumPy 문서의 공백을 정리하고 메우고자 합니다.

사용자가 전달하는 지식은 테스트 및 실험을 통해 얻습니다[4,5]. 지식은 테스트 및 평가 방법에 따라 다릅니다. 방법에 명확한 목표와 적용사항을 제공하는 콘텐츠를 사용하면 사용자가 새로운 아이디어와 방법을 테스트하고 평가할 수 있습니다. 커뮤니티는 기술, 사실, 애플리케이션을 개선하는 지식 기반을 구축할 수 있습니다. 방법 공간은 두 가지 이점을 제공합니다. 첫째, 신규 사용자와 경험 많은 사용자에게 실험을 테스트하고 빌드해야 하는 명확한 목표가 있습니다. 둘째, 잠재적인 문서 작성자는 목표, 방법, 해결책을 전달할 수 있는 공간을 갖게 됩니다. 방법 스페이스는 신규 사용자와 가능한 기여자가 NumPy 문서에 더 쉽게 액세스할 수 있도록 하는 데 시급한 니즈를 충족합니다. 현재 지식

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

소프트웨어 문서에는 튜토리얼 스페이스, 방법 스페이스, 설명 스페이스, 참조 스페이스 등 네 가지 스페이스가 있습니다[3]. NumPy 문서에는 튜토리얼 스페이스에 설명과 방법 스페이스 콘텐츠가 혼합된 여러 문서가 있습니다. 튜토리얼 공간은 사용자 교육에 중점을 두고 반복하기 쉬운 단계를 사용하여 아이디어를 전달해야 합니다. 방법 공간은 사용자가 실제 애플리케이션에 적용할 수 있는 더 많은 목표 중심 절차를 제공합니다. 설명 공간은 각 함수의 자세한 문자열을 제공합니다. 현재 튜토리얼 및 방법 스페이스가 명확하게 구분되지 않고 설명 및 참조 스페이스로 들어가는 경우가 있습니다. '초보자'를 위한 훌륭한 튜토리얼이 있으며, 'Matlab 사용자를 위한 Numpy'에서 Matlab 사용자가 NumPy 코드를 빌드하는 방법을 참고할 수 있습니다. 이 네 가지 공간을 명확하게 구분하면 문서가 더 명확해집니다.

기술 자료의 공백/충족되지 않은 요구사항

현재 문서에서는 많은 필수 주제를 다루지만 튜토리얼, 방법, 설명, 참조 공간 간에 명확한 구분이 없습니다. 이로 인해 잠재적인 참여자가 혼란을 겪게 됩니다. 신규 사용자는 튜토리얼 섹션의 설명과 참조 자료에 압도될 수 있으며, 잠재적인 참여자는 참여하는 데 어려움을 겪을 수 있습니다. 문서의 논리적 흐름과 신규 참여자가 작성한 사용자 제공 방법 문서의 풀 리퀘스트 관리를 통해 신규 사용자와 문서 작성 참여자를 위해 더 쉽게 액세스할 수 있는 레이아웃을 제안합니다. 제 장기적인 목표는 문서 커뮤니티를 구축하여 문서를 통해 배우고 교환하고 교육받는 경험이 되도록 하는 것입니다. 이 문서 모델은 신규 사용자와 잠재적 참여자를 위한 실제 경험을 바탕으로 교육을 제공합니다.

근거

이 Google Summer of Docs 제안서는 교육 및 경력 목표 달성에 중요합니다. 저는 모든 과정에 NumPy와 SciPy를 사용합니다. 현재 문서는 학생들이 탐색하기 어렵습니다. CS 전공이 아닌 학생에게 코딩 방법을 가르치는 경험을 활용해 현재 튜토리얼에서 구성, 수정, 부족한 부분을 채우고 싶습니다. 그런 다음 문서를 과정의 교과서 및 참조 자료로 사용할 수 있습니다. Python과 를 사용하여 수십 개의 튜토리얼, 연습문제, 예시를 만들었습니다. 이 자료의 일부를 튜토리얼과 방법 동영상으로 변환하고 싶습니다. 800명이 넘는 학생들이 Scipy 스택의 일부로 NumPy를 사용했으며, 가을 학기에 문서 작성 참여자가 되겠다고 하는 학생이 여러 명 있습니다. 코네티컷 대학교에서 4년간 강의하면서 30크레딧 시간의 과정을 가르쳤습니다.

세부 목표

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

이러한 세 가지 구체적인 목표는 신규 사용자가 문서를 더 쉽게 접근할 수 있도록 하고 잠재적인 참여자에게 구조를 제공하기 위한 것입니다. 또한 이러한 목표는 NumPy 문서 커뮤니티를 지속적으로 성장시키겠다는 장기적인 목표를 달성하는 데도 도움이 됩니다. 예상 결과

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

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

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

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

제안된 문서:

i.Tutorials:

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

ii. 방법 안내:

  • n차원 배열의 선형 대수 (제목과 내용 입력란을 수정하고 'Numpy의 선형 대수로 이미지 처리'로 제목을 변경하고 싶음)
  • numpy 튜토리얼 방법 안내 콘텐츠 링크 (진행 중인 작업)

iii. 설명:

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

iv. 참조 공간:

  • 용어 설명
  • Numpy API 참조
  • Matlab 사용자를 위한 Numpy (등가 표는 유용한 참조 표이지만 배열/행렬에 관한 설명은 방해가 되며 지원 중단된 것으로 보임)

이 Google Docs 시즌을 마치면 다음과 같은 결과를 얻을 수 있을 것으로 기대합니다.

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

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

세 번째 결과는 코네티컷 대학교의 학생들에게 numpy-tutorials 저장소에서 문서를 빌드하도록 안내하는 것입니다. 제출된 튜토리얼 또는 방법 문서는 NumPy를 사용하여 엔지니어링 문제를 해결하는 Jupyter 노트북입니다. 수업 노트/예시 중 일부를 사용하여 예시 노트북을 제출하겠습니다. 학생들에게 템플릿과 프레이밍 체계를 만들 때 레이아웃과 구조를 따르도록 조언하겠습니다. 이러한 결과는 학생들이 개념과 해결책을 더 많은 사람들에게 전달할 수 있는 진정한 경험을 선사합니다. 학생들이 NumPy 커뮤니티에 참여하고 학습할 수 있는 좋은 기회입니다.

결과 1: 웹사이트 수정 결과물 날짜 Fork 저장소 및 Sphinx로 문서 빌드 9월 21일 정의되고 연결된 4개의 스페이스가 있는 웹페이지 빌드 10월 1일 현재 튜토리얼을 적절한 스페이스로 이동하고 문서 빌드 10월 10일 제안된 변경사항이 포함된 PR을 GitHub에 제출 11월 1일 Comment/Suggestion에 응답하고 PR 수정(결과 2와 함께 진행 중) 웹사이트 수정 11월 30일

결과 2: 튜토리얼 수정 결과물 날짜 튜토리얼 수정 순위 검토 9/21 현재 튜토리얼 콘텐츠를 튜토리얼 및 설명 스페이스로 분리 10/1 순위 1: 배열 읽기/쓰기 작성 10/10 분리 및 수정을 위해 github에 PR 제출 10/20 순위 2: 배열 생성 PR 작성 11/15 순위 3: 요소별 및 선형 대수 연산 PR 작성 11/30

제안된 튜토리얼 수정사항 순위 (멘토/커뮤니티에 따라 변경될 수 있음):

  1. 현재 읽기/쓰기 배열이 비어 있는 페이지입니다.

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

  3. 요소별 및 선형 대수 연산 (+,-,*,/ 및 +,-@,linalg.solve)이 없습니다. 이는 특히 1에 유용합니다. Matlab 사용자 및 2. 선형 대수 (머신러닝, 선형 회귀 등)를 채택하는 사용자

결과 3: 선별된 방법 공간 제공 날짜 외부 링크(문제/예시) 구축 방법 예시 (후보: 기타 줄의 자연 주파수를 찾는 방법 10월 20일
신규 참여자를 위한 방법 템플릿 작성 10/1 진행 튜토리얼 템플릿 PR 및 참여 프레이밍 다른 참여자와 협력하여 승인된 방법/1 커뮤니티 구성원 모집: 방법 튜토리얼/1 커뮤니티 구성원 모집)

예상 유의도

이 Google Summer of Docs 제안서에서는 NumPy 문서를 작성하고 , 웹사이트에서 누락된 튜토리얼을 작성하고, 문서 작성자를 확보할 것입니다. 기계공학 교수로서 저는 학생들이 문서를 탐색하고 소개 튜토리얼과 실습 방법 가이드를 쉽게 찾을 수 있도록 문서를 분류할 계획입니다. 튜토리얼, 방법, 참조, 설명으로 분류된 문서를 통해 잠재적인 참여자에게 새로운 리소스를 빌드할 수 있는 구조화된 예시를 제공합니다. 제안된 문서는 신규 사용자와 숙련된 사용자 모두를 위한 교육 및 커뮤니케이션 경험을 통해 주고받는 데 도움이 됩니다. 코네티컷 대학교 학생을 대상으로 제안된 안내 문서에서는 이러한 교육 및 커뮤니케이션 아이디어를 실천할 수 있습니다. 모든 사용자가 실험하고, 학습하고, NumPy 커뮤니티에 참여할 수 있는 공간을 찾을 수 있기를 바랍니다.

참조

  1. 2020년 7월에 NumPy.org 웹사이트에 액세스했습니다.
  2. NumPy GitHub 저장소
  3. 문서 시스템 Divio.com은 2020년 7월에 액세스했습니다.
  4. 듀이, 존 민주주의와 교육 Project Gutenberg, 2015년 8월.
  5. 듀이, 존. 확실성 조지 앨런과 언윈에 대한 퀘스트 2005년 6월.