numpy-100 日本語翻訳 (81-100)
これは、
の22日目の記事です。
趣味で統計と機械学習を学んでいます Pythonが好きになりました
というか、numpy が好きみたいです numpy100 を翻訳したので100 numpy exercises (日本語翻訳版)、ブログにします
1. numpy パッケージを `np` の名前でインポートする (★☆☆)
答え
import numpy as np
2. numpy バージョンとその設定を表示する (★☆☆)
答え
print(np.__version__)
np.show_config()
3. 大きさ 10 の零ベクトルを生成する (★☆☆)
答え
Z = np.zeros(10)
print(Z)
[0. 0. 0. 0. 0. 0. 0. 0. 0. 0.]
4. 配列のメモリーサイズを知る方法は (★☆☆)
答え
Z = np.zeros((10,10))
print(Z.size*Z.itemsize)
800
5. コマンドラインからの、numpy add 関数のドキュメントの取得方法は? (★☆☆)
答え
python -c "import numpy; numpy.info(numpy.add)"
6. 5番目の値だけ 1 の大きさ 10 の零ベクトルを生成する (★☆☆)
答え
Z = np.zeros(10)
Z[4] = 1
print(Z)
[0. 0. 0. 0. 1. 0. 0. 0. 0. 0.]
7. 値の範囲が 10 から 49 であるようなベクトルを生成する (★☆☆)
答え
Z = np.arange(10,50)
print(Z)
[10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33
34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49]
8. ベクトルを逆転する (最初の要素が最後に) (★☆☆)
答え
Z = np.arange(50)
Z = Z[::-1]
print(Z)
[49 48 47 46 45 44 43 42 41 40 39 38 37 36 35 34 33 32 31 30 29 28 27 26
25 24 23 22 21 20 19 18 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2
1 0]
9. 値の範囲が 0 から 8 であるような 3x3 マトリクスを生成する (★☆☆)
答え
Z = np.arange(9).reshape(3,3)
print(Z)
[[0 1 2]
[3 4 5]
[6 7 8]]
10. [1,2,0,0,4,0] からゼロでない要素の添え字を見つける (★☆☆)
答え
nz = np.nonzero([1,2,0,0,4,0])
print(nz)
(array([0, 1, 4]),)
答え
np.eye(3)
array([[1., 0., 0.],
[0., 1., 0.],
[0., 0., 1.]])
12. 乱数で 3x3x3 配列を生成する (★☆☆)
答え
Z = np.random.random((3,3,3))
print(Z)
[[[0.52139159 0.71417179 0.98566575]
[0.71946288 0.55356541 0.46827844]
[0.14190383 0.78303101 0.42199173]]
[[0.79905955 0.23618193 0.6525496 ]
[0.78334409 0.34081869 0.50622032]
[0.23197788 0.27511517 0.58518794]]
[[0.71064867 0.88496634 0.44757271]
[0.36761105 0.29457499 0.26001356]
[0.40253981 0.13853578 0.56675828]]]
13. 乱数で 10x10 配列を生成して、その最小値と最大値を見つける (★☆☆)
答え
Z = np.random.random((10,10))
Zmin, Zmax = Z.min(), Z.max()
print(Zmin, Zmax)
0.0013772822154449749 0.9929879247278675
14. 大きさ 30 の乱数のベクトルを生成して、その平均を求める (★☆☆)
答え
Z = np.random.random(30)
m = Z.mean()
print(m)
0.5043710617045838
15. 周囲が 1 で内部が 0 であるような2次元配列生成する (★☆☆)
答え
Z = np.ones((10,10))
Z[1:-1,1:-1] = 0
print(Z)
[[1. 1. 1. 1. 1. 1. 1. 1. 1. 1.]
[1. 0. 0. 0. 0. 0. 0. 0. 0. 1.]
[1. 0. 0. 0. 0. 0. 0. 0. 0. 1.]
[1. 0. 0. 0. 0. 0. 0. 0. 0. 1.]
[1. 0. 0. 0. 0. 0. 0. 0. 0. 1.]
[1. 0. 0. 0. 0. 0. 0. 0. 0. 1.]
[1. 0. 0. 0. 0. 0. 0. 0. 0. 1.]
[1. 0. 0. 0. 0. 0. 0. 0. 0. 1.]
[1. 0. 0. 0. 0. 0. 0. 0. 0. 1.]
[1. 1. 1. 1. 1. 1. 1. 1. 1. 1.]]
16. 既存の配列の周囲を 0 で囲む方法は? (★☆☆)
答え
Z = np.ones((5,5))
Z = np.pad(Z, pad_width=1, mode="constant", constant_values=0)
print(Z)
[[0. 0. 0. 0. 0. 0. 0.]
[0. 1. 1. 1. 1. 1. 0.]
[0. 1. 1. 1. 1. 1. 0.]
[0. 1. 1. 1. 1. 1. 0.]
[0. 1. 1. 1. 1. 1. 0.]
[0. 1. 1. 1. 1. 1. 0.]
[0. 0. 0. 0. 0. 0. 0.]]
17. 以下の式の結果は何か? (★☆☆)
0 * np.nan np.nan == np.nan np.inf > np.nan np.nan - np.nan 0.3 == 3 * 0.1
答え
print(0 * np.nan)
print(np.nan == np.nan)
print(np.inf > np.nan)
print(np.nan - np.nan)
print(0.3 == 3 * 0.1)
nan
False
False
nan
False
18. 対角成分の直下に 1,2,3,4 の成分を持つ 5x5 行列を生成する (★☆☆)
答え
Z = np.diag(1+np.arange(4), k=-1)
print(Z)
[[0 0 0 0 0]
[1 0 0 0 0]
[0 2 0 0 0]
[0 0 3 0 0]
[0 0 0 4 0]]
19. 8x8 行列を生成して、市松模様で埋める (★☆☆)
答え
Z = np.zeros((8,8), dtype=int)
Z[1::2,::2] = 1
Z[::2,1::2] = 1
print(Z)
[[0 1 0 1 0 1 0 1]
[1 0 1 0 1 0 1 0]
[0 1 0 1 0 1 0 1]
[1 0 1 0 1 0 1 0]
[0 1 0 1 0 1 0 1]
[1 0 1 0 1 0 1 0]
[0 1 0 1 0 1 0 1]
[1 0 1 0 1 0 1 0]]
20. shape属性が (6,7,8) の配列のとき、100 番目の要素の添え字 (x,y,z)は?
答え
np.unravel_index(100, (6,7,8))
(1, 5, 4)