Python 無料で独習 【超特訓】Numpy20本ノック 03

Python
この記事は約3分で読めます。

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

コメント

タイトルとURLをコピーしました