とある変人のお道具箱

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

Numpyの練習 100 Numpy Exercises Q6-Q10

前回はこちら

www.henjins-toolbox.tech
この記事の続きです。今回は100 numpy exercisesのQ6-Q10を解いていきます。
    

6. Create a null vector of size 10 but the fifth value which is 1

(サイズ10のゼロベクトルを作れ。ただし5番目の値は1にしろ)

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

Q3と同じ方法で配列を作ってから、5番目の要素を1にしました。
インデックスで指定するだけなので、Pythonを書いたことある人なら普通にできると思います。
    

7. Create a vector with values ranging from 10 to 49

(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]

np.arrange()というのが標準Pythonに入っているrange()のnumpyみたいな感じですね。
    

8. Reverse a vector (first element becomes last)

(ベクトルを逆にしろ。)

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]

適当にベクトルを作成してから逆順にします。スライスを使って逆順にしました。Python標準関数のreversed()などは使えないので注意してください。
    

9. Create a 3x3 matrix with values ranging from 0 to 8

(値が0から8の3×3行列を作れ。)

Z = np.arange(9).reshape(3,3)
print(Z)
[[0 1 2]
 [3 4 5]
 [6 7 8]]

イメージとしては0から8までの配列を作ってから、形を変えてる感じですかね。
    

10. Find indices of non-zero elements from [1,2,0,0,4,0]

(行列[1,2,0,0,4,0]のゼロでない要素のインデックスを求めろ)

Z = [1,2,0,0,4,0]
non_zero = np.nonzero(Z)
print(non_zero)
(array([0, 1, 4]),)

ゼロでない要素のインデックスを返すnp.nonzero()があるのでこれを使います。
    

続きはこちら