NumPy 프로젝트

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

프로젝트 요약

오픈소스 조직:
NumPy
테크니컬 라이터:
쿠퍼르크
프로젝트 이름:
커뮤니티 교육을 위한 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의 문서에 더 쉽게 액세스할 수 있도록 하는 즉각적인 니즈를 충족합니다. 현재 지식

John Dewey는 학습의 기초는 진정한 경험이라고 말했습니다[4]. NumPy 커뮤니티는 다른 사용자와 공유할 수 있는 엄청난 양의 진정한 경험을 보유하고 있습니다. 교육은 커뮤니티와 소통을 토대로 합니다. 잘 정리된 문서 페이지를 통해 신규 사용자가 NumPy를 쉽게 경험할 수 있습니다. 또한 참여자들이 NumPy로 경험을 전달할 수 있도록 구조화된 템플릿을 만듭니다.

소프트웨어 문서는 튜토리얼 공간, 방법 안내 공간, 설명 공간, 참조 공간 등 크게 4개의 공간으로 그룹화됩니다. NumPy 문서의 튜토리얼 공간에는 튜토리얼에 설명 및 방법 공간이 포함된 여러 문서가 포함되어 있습니다. 튜토리얼 공간은 사용자 교육에 초점을 맞추고 아이디어를 전달하기 쉬운 반복 단계를 사용해야 합니다. 방법 공간은 사용자가 실제 애플리케이션에 적용할 수 있는 좀 더 목표 지향적인 절차를 제공합니다. 설명 공간은 각 함수에 자세한 doc-string을 제공합니다. 현재 튜토리얼과 방법 안내 공간은 명확하게 구분되어 있지 않으며 설명 및 참조 공간에 들어가는 경우가 있습니다. '절대적 초보자용'을 위한 훌륭한 튜토리얼이 있으며, 'Matlab 사용자를 위한 Numpy'에는 NumPy 코드를 빌드할 수 있는 Matlab 사용자를 위한 훌륭한 참고 자료가 있습니다. 이러한 4개의 공백을 명확하게 구분하면 문서가 더 명확해집니다.

기술 자료의 격차/충족하지 못한 니즈

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

사유

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

구체적인 목표

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

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

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

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

새로운 문서 참여자는 전체 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 등) (쓰기: 보통-낮음 우선순위)
  • 요소별 연산 (+,-,*,/) 및 선형 대수 연산 (+,-,@, 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일 변경 제안과 함께 github에 PR 제출 11월 1일 의견/제안에 응답하고 웹사이트 1/제안에 대한 수정 결과 1/웹사이트3 수정

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

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

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

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

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

결과 3: 선별된 방법 공간 제공 날짜 외부 링크(문제/예시) 방법 예시 작성 (후보: 기타 문자열의 자연스러운 빈도를 찾는 방법 10/20
10월 1일 진행 중) 튜토리얼 템플릿 홍보 및 프레이밍 가능한 튜토리얼 템플릿 PR 및 프레이밍 다른 참여자와 협력하여 UCon 학생/다른 참여자 모집 및 승인 - 학습/다른 참여자 모집

예상 중요도

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월.