とある変人のお道具箱

技術系のことにについて幅広く触れていくブログです

Numpyの練習 100 Numpy Exercises Q1-Q5

Numpyが何なのかという説明は他の人の記事に任せるとして、私は今からNumpyの問題集を解いていこうと思います。この問題集は非公式ではありますが、GithubのStarが4.6k,Forkが2.3k(2019.12.30現在)もある非常に有名なチュートリアル的なものです。
github.com

私の進め方はまずこのリポジトリをクローンして、その中にある"100_Numpy_exercises_no_solution.ipynb"というファイルに書き込んでいくスタイルでいきます。なお、Jupyter Notebookを使用しているのでインストールを指定ない人は先にこちらの記事を参考にインストールしておいてください。
www.henjins-toolbox.tech

    

なお、私が以下に書き連ねていくものは私の解答+実行結果+ちょっとしたコメントや気付きです。問題文の下の括弧書きの日本語は私が訳した問題分の意訳です。正しく実行できることは確認して記載していますが、解法だけを知りたいのであれば、同じくクローンしたリポジトリ内にある"100 _Numpy_exercises.md"というファイルを参照することをおすすめします。
全部で100問あるので1記事5問のペースの全20記事の予定で進めていこうと思います。
では、早速進めていきます。
     

1. Import the numpy package under the name np

(numpyをnpという名前でインポートしなさい)

import numpy as np

numpyをnpという名前で使うのは慣習的なものなので深く考えずにみんなに合わせましょう。
   

2. Print the numpy version and the configuration

(numpyのバージョンと構成を表示させよ)

print(np.__version__)
np.show_config()
1.18.0
blas_mkl_info:
  NOT AVAILABLE
blis_info:
  NOT AVAILABLE
openblas_info:
    libraries = ['openblas', 'openblas']
    library_dirs = ['/usr/local/lib']
    language = c
    define_macros = [('HAVE_CBLAS', None)]
blas_opt_info:
    libraries = ['openblas', 'openblas']
    library_dirs = ['/usr/local/lib']
    language = c
    define_macros = [('HAVE_CBLAS', None)]
lapack_mkl_info:
  NOT AVAILABLE
openblas_lapack_info:
    libraries = ['openblas', 'openblas']
    library_dirs = ['/usr/local/lib']
    language = c
    define_macros = [('HAVE_CBLAS', None)]
lapack_opt_info:
    libraries = ['openblas', 'openblas']
    library_dirs = ['/usr/local/lib']
    language = c
    define_macros = [('HAVE_CBLAS', None)]

    

3. Create a null vector of size 10

(要素が全て0で長さが10のベクトルを作れ)

Z = np.zeros(10)
print(Z)
[0. 0. 0. 0. 0. 0. 0. 0. 0. 0.]

np.zeros()は全ての要素を0で初期化しています。もし初期化する必要がないときはnp.empty(10)を使うとスピードがちょっと速くなります。
    

4. How to find the memory size of any array

(配列のメモリサイズを表示させよ)

Z = np.zeros((10,10))
print(Z)
print("%d bytes" % (Z.size * Z.itemsize))
[[0. 0. 0. 0. 0. 0. 0. 0. 0. 0.]
 [0. 0. 0. 0. 0. 0. 0. 0. 0. 0.]
 [0. 0. 0. 0. 0. 0. 0. 0. 0. 0.]
 [0. 0. 0. 0. 0. 0. 0. 0. 0. 0.]
 [0. 0. 0. 0. 0. 0. 0. 0. 0. 0.]
 [0. 0. 0. 0. 0. 0. 0. 0. 0. 0.]
 [0. 0. 0. 0. 0. 0. 0. 0. 0. 0.]
 [0. 0. 0. 0. 0. 0. 0. 0. 0. 0.]
 [0. 0. 0. 0. 0. 0. 0. 0. 0. 0.]
 [0. 0. 0. 0. 0. 0. 0. 0. 0. 0.]]
800 bytes

問題文にはどんな配列でもいいと書いてあるのでZはどんな配列でも可です。
sizeは要素数、itemsizeは要素のバイト数を返す関数です。
    

5. How to get the documentation of the numpy add function from the command line?

(コマンドラインからnumpy.addのドキュメントを取得せよ)
公式の解答を実行してもERRORが発生しました。原因が不明のため分かり次第追記します
    

続きはこちら

www.henjins-toolbox.tech