Numpy20本ノック
問題その5 基本情報の取得
こちらのベクトルと行列の基本情報(下記項目)を取得してください。
シンプルな問題文ほど難しかったりしますよね(笑)
ながれとしては a b の行列を定義して、
形状、次元、データ型、要素数
の各項目の情報を取得していくみたいです。
まずは行列の定義
import numpy as np
a = np.array([2,3,4])
a
array([2, 3, 4])
B = np.array([[1.2,3.5,5.1,],[-0.3,1.1,-4.5]])
B
array([[ 1.2, 3.5, 5.1],
[-0.3, 1.1, -4.5]])
このデータを元に情報を取得していきます。
まずはベクトルa
#aの形状確認
a.shape
(3,)
#aの次元確認
a.ndim
1
#aのデータ型確認
a.dtype
dtype('int32')
#aの要素数の確認
a.size
3
次は行列B
#Bの形状確認
B.shape
(2, 3)
#Bの次元確認
B.ndim
2
#Bのデータ型確認
B.dtype
dtype('float64')
#Bの要素数の確認
B.size
6
問題その6 インデックスとスライシング
こちらのベクトル・行列から以下の項目にしたがってそれぞれの
要素を取得してください。
*ベクトル・行列の生成方法の参考例を記載しておきます。
まずは行列を作成します。
a = np.arange(1,13,2)
こちらの式は 1から13の一個手前までの数字の間で
2こずつ飛ばした数字を作成していきます。
結果 1, 3, 5, 7, 9, 11となります。
a = np.arange(1,13,2)
a
array([ 1, 3, 5, 7, 9, 11])
B = np.array([[2,4,6],[-1,5,-3],[0,-2,3]])
B
array([[ 2, 4, 6],
[-1, 5, -3],
[ 0, -2, 3]])
まず、はじめにベクトルaから。
3つめから5つめまでの値をとります。
array([ 1, 3, 5, 7, 9, 11])
全部で6個のデータなので、
3つめから、最後から2番目までと表現することもできるので
a[2:-1]
で表すことができます。
もちろん
a[2:5]
でも結果は同じです。
a[2:-1]
array([5, 7, 9])
a[2:5]
array([5, 7, 9])
次は逆順ですが
a[::-1]
と表現するそうです。
a[::-1]
array([11, 9, 7, 5, 3, 1])
次は行列Bに対する処理です。
一行目全ての値ということなので、
Bの0行目なので
B[0]
で値がとれます。
B[0]
array([2, 4, 6])
次は3行1列目の値をとるなので
言い換えると
2行0番目になります。
B[2,0]
0
最後は2~3行目、2~3列目の4つの値を取得するです。
結構複雑です。
まずは下2行の値を取る場合
B[1:]
array([[-1, 5, -3],
[ 0, -2, 3]])
で値がとれます。
この
B[1:]
に対して列も2行目以降が欲しいので
1:という値を追加します。
B[1:,1:]
array([[ 5, -3],
[-2, 3]])
コメント