【Clazzio】【クラッツィオ】【Clazzio ECT R】【シートカバー】【セドリック / グロリア】【Y33】H7/6~11/6 5人乗り 運転席パワーシートで助手席手動シート / 2列目ヘッドレスト固定式高速配送

  1. Top
  2. Python
  3. NumPy

NumPy配列ndarrayの対角成分の抽出、対角行列の作成(diag, diagonal)

Date: 2018-11-04 / tags: Python, NumPy
Tweet

二次元のNumPy配列numpy.ndarrayの対角成分を抽出するにはnumpy.diag()関数を使う。一次元の配列からそれを対角成分とする対角行列を作成することもできる。

numpy.diag()numpy.ndarrayを引数とする関数だが、numpy.ndarrayのメソッドとして対角成分を抽出するnumpy.ndarray.diagonal()も用意されている。

ここでは以下の内容について説明する。

  • numpy.diag()で対角成分を抽出
    • 基本的な使い方
    • 開始位置の指定: 引数k
    • 正方行列ではない場合
    • 多次元配列の場合
    • 注意: 戻り値はread-onlyのビュー(v1.14.5の場合)
  • numpy.diag()で対角行列を生成
    • 基本的な使い方
    • 開始位置の指定: 引数k
    • 単位行列の生成
  • diagonal()メソッドの使い方
スポンサーリンク

【Clazzio】【クラッツィオ】【Clazzio ECT R】【シートカバー】【セドリック / グロリア】【Y33】H7/6~11/6 5人乗り 運転席パワーシートで助手席手動シート / 2列目ヘッドレスト固定式新作特集!

【Clazzio】【クラッツィオ】【Clazzio ECT R】【シートカバー】【セドリック / グロリア】【Y33】H7/6~11/6 5人乗り 運転席パワーシートで助手席手動シート / 2列目ヘッドレスト固定式の最新アイテムを海外通販!

以下のnumpy.ndarrayを例とする。

import numpy as np
a = np.arange(9).reshape((3, 3))
print(a)
# [[0 1 2]
# [3 4 5]
# [6 7 8]]



np.diag()の引数にnumpy.ndarrayを指定すると、対角成分が一次元配列として返される。

print(np.diag(a))
# [0 4 8]



開始位置の指定: 引数k

上の例のようにデフォルトは(0, 0)を開始位置として対角成分を抽出するが、引数kにオフセットを整数で指定できる。

正の整数を指定すると開始位置が右側(上側)に移動。範囲外を指定してもエラーにはならず、空の配列が返される NSX【NA1】【90/9~】ディクセルブレーキローター【HDタイプ】フロント・リア1台分 【カヤバ】ショックアブソーバー NEW SR SPECIAL ( ニューエスアールスペシャル ) サニー 【 B15 】 フロント L  品番 : NST5345L。

print(np.diag(a, k=1))
# [1 5]
print(np.diag(a, k=2))
# [2]
print(np.diag(a, k=3))
# []



負の整数は開始位置が左側(下側)に移動。

print(np.diag(a, k=-1))
# [3 7]
print(np.diag(a, k=-2))
# [6]
print(np.diag(a, k=-3))
# []



正方行列ではない場合

正方行列でないnumpy.ndarraynp.diag()の引数として指定可能。引数kもそのまま使える。

a = np.arange(12).reshape((3, 4))
print(a)
# [[ 0 1 2 3]
# [ 4 5 6 7]
# [ 8 9 10 11]]
print(np.diag(a))
# [ 0 5 10]
print(np.diag(a, k=1))
# [ 1 6 11]
print(np.diag(a, k=-1))
# [4 9]



多次元配列の場合

三次元以上の多次元配列を指定するとエラーとなる。

a = np.arange(27).reshape((3, 3, 3))
print(a)
# [[[ 0 1 2]
# [ 3 4 5]
# [ 6 7 8]]
# 
# [[ 9 10 11]
# [12 13 14]
# [15 16 17]]
# 
# [[18 19 20]
# [21 22 23]
# [24 25 26]]]
# print(np.diag(a))
# ValueError: Input must be 1- or 2-d.



一次元配列の場合は次に示すようにその配列を対角成分とする対角行列を返す。

注意: 戻り値はread-onlyのビュー(v1.14.5の場合)

np.diag()の戻り値がビューかコピーかはバージョンによって異なる。

whether it returns a copy or a view depends on what version of numpy you are using.
numpy.diag — NumPy v1.15 Manual

以下の例はバージョン1.14.5の場合。このバージョンではnp.diag()はread-only(書き換え禁止)のビューとして返される。

a = np.arange(9).reshape((3, 3))
print(a)
# [[0 1 2]
# [3 4 5]
# [6 7 8]]
a_diag = np.diag(a)
print(a_diag)
# [0 4 8]
# a_diag[0] = 100
# ValueError: assignment destination is read-only



要素の値を書き換えたい場合はflags.writeable属性をTrueとする。ビューなので元の配列の要素の値も変更される。

a_diag.flags.writeable = True
a_diag[0] = 100
print(a_diag)
# [100 4 8]
print(a)
# [[100 1 2]
# [ 3 4 5]
# [ 6 7 8]]



ビューではなくコピーを取得したい場合はcopy()を使う。この場合、元の配列の要素の値は変更されない。

a_diag_copy = np.diag(a).copy()
print(a_diag_copy)
# [100 4 8]
a_diag_copy[1] = 100
print(a_diag_copy)
# [100 100 8]
print(a)
# [[100 1 2]
# [ 3 4 5]
# [ 6 7 8]]



numpy.diag()で対角行列を生成

【Clazzio】【クラッツィオ】【Clazzio ECT R】【シートカバー】【セドリック / グロリア】【Y33】H7/6~11/6 5人乗り 運転席パワーシートで助手席手動シート / 2列目ヘッドレスト固定式を比較します

np.diag()は対角行列の生成にも使える 【店舗取付サービス】【VW NEW BEETLE (1999/09~2010/11) ハルトデザイン】New Beetle メーターフードカバー クローム。

引数に一次元配列を指定するとその配列を対角成分とした対角行列が生成される。

import numpy as np
a = np.array([10, 20, 30])
print(a)
# [10 20 30]
print(np.diag(a))
# [[10 0 0]
# [ 0 20 0]
# [ 0 0 30]]



引数はnumpy.ndarrayでなくPyhton標準のリストやタプルでもOK。

print(np.diag([100, 200, 300]))
# [[100 0 0]
# [ 0 200 0]
# [ 0 0 300]]



開始位置の指定: 引数k

対角成分の抽出と同様に引数kで開始位置を指定できる 。

第一引数の配列の要素がすべて収まる正方行列が返される 【関西、関東限定】取付サービス品ハスラー フロントリップ【エイトデザイン】ハスラー FRONT CENTER SPOILER。

print(np.diag(a, k=1))
# [[ 0 10 0 0]
# [ 0 0 20 0]
# [ 0 0 0 30]
# [ 0 0 0 0]]
print(np.diag(a, k=-2))
# [[ 0 0 0 0 0]
# [ 0 0 0 0 0]
# [10 0 0 0 0]
# [ 0 20 0 0 0]
# [ 0 0 30 0 0]]



単位行列の生成

単位行列(対角成分がすべて1の対角行列)はnp.diag()を使って生成することもできるが、専用の関数np.identity()が便利。

np.identity()では第一引数にサイズ、第二引数に型dtypeを指定する(デフォルトはNoneで多くの場合はfloatになる)。

print(np.diag([1, 1, 1]))
# [[1 0 0]
# [0 1 0]
# [0 0 1]]
print(np.identity(3))
# [[1. 0. 0.]
# [0. 1. 0.]
# [0. 0. 1.]]
print(np.identity(3, int))
# [[1 0 0]
# [0 1 0]
# [0 0 1]]



np.identity()を使うと配列をone-hot表現に簡単に変換できる。以下の記事を参照。

【割引クーポン配布中】Clazzio/クラッツィオ CLAZZIO Giacca(ジャッカ) インサイト/ZE3 H23/11~ カラータンベージュ【14EHB0347T】

【Clazzio】【クラッツィオ】【Clazzio ECT R】【シートカバー】【セドリック / グロリア】【Y33】H7/6~11/6 5人乗り 運転席パワーシートで助手席手動シート / 2列目ヘッドレスト固定式の激安通販ショップ


ブリッツ MR-Wagon Brake Pads リア ハイエース RZH111G 品番:46330


【Clazzio】【クラッツィオ】【Clazzio ECT R】【シートカバー】【セドリック / グロリア】【Y33】H7/6~11/6 5人乗り 運転席パワーシートで助手席手動シート / 2列目ヘッドレスト固定式 【最鏡面】M900A/M910A タンク ステンレスドアモール 鏡面 ゴールド 純研磨/車/車パーツ/モール/ステンレス/高品質/送料無料

↓↓↓DIXCEL/ディクセル ブレーキディスクローター PD フロント左右セット PEUGEOT 405 1.8 年式:87~96 品番:PD211 2387S 備考必読ください;clazzio シートカバー クラッツィオ リアルレザータイプ スバル ステラ 型式 LA150F/LA160F 年式 H26/12-H28/6/20 グレード L ≪ 運転席リフター無車用 ≫※コンビニフック使用不可 ※ウォームパック(シートヒーター)装着車不可;RDmoto アールディーモト ガード・スライダー クラッシュプロテクター・ガード(Crash protectors) アルマイトカラー:レッドアルマイト スライダーベースカラー:ホワイト TIGER XPLORER [タイガーエクスプローラー], CUSCO クスコ LSDタイプRSスペックF-1WAY LSD 186 CT, ■DIXCEL(ディクセル) サーブ 9-3 2.8 V6 TURBO (FF&4WD) FB284 SAAB ブレーキローター リア HS TYPE, SP武川 【タケガワ】 オイルクーラーユニット (TYPE-2/ダイカストカバー可) (スペシャル/乾式クラッチ用)) 【07-07-0162】, RS-R Ti2000 DOWN サスペンション T087TW フロント/リア トヨタ プリウスα ZVW41W FF HV Gツーリングセレクション 1800cc 2011年05月~2014年10月;[ACRE] アクレ ブレーキローター スタンダードタイプ フロント用 ADバン / ADワゴン WY10 90/10~95/06 1300 ※代引不可 ※北海道・沖縄・離島は送料2160円 17インチ サマータイヤ セット【適応車種:デュアリス(J10系)】WEDS ウェッズスポーツ SA-54R ウォースブラッククリア 7.5Jx17グラントレック AT3 215/60R17↓↓↓エムズスピード プルシャンブルー ルーフスポイラー 未塗装 トヨタ アリスト JZS160/161, 【送料無料】 DUNLOP ダンロップ ウインターマックス 02 WM02 225/55R18 18インチ スタッドレスタイヤ ホイール4本セット LEHRMEISTER レアマイスター ディチョット 7.5J 7.50-18【DUwin18】, ヨコハマ スタッドレス アイスガード シックス IG60 215/65R16 & バスター ログ 16×6.5 PCD114.3/5H +52 ラッシュ J200E / J210E, 14インチ サマータイヤ セット【適応車種:スペーシア(MK32S系)】WEDS レオニス FY BMCミラーカット 4.5Jx14エナセーブ EC202L 155/65R14, [KYB] カヤバ ショック NEW SR SPECIAL フロント 2本セット コロナエクシブ ST182 89/09~93/09 [FE / TR / TRG] 送料1000円(税別) ※北海道・沖縄・離島は送料別途

【Clazzio】【クラッツィオ】【Clazzio ECT R】【シートカバー】【セドリック / グロリア】【Y33】H7/6~11/6 5人乗り 運転席パワーシートで助手席手動シート / 2列目ヘッドレスト固定式 「複数種類あり」 ライト の リヤ シート [一式] ■ 『図の略番 64210A のみ』 スバル純正部品 エクシーガ 適合年式[平成20年04月~24年06月]『品番』 64210YC120AS ^j50^ 三菱 パジェロ グリル ABS Chromed Front Grill Grille Cover Trims For Mitsubishi Pajero Sport 13-15 New 三菱パジェロスポーツ13-15新のためにABSクロームメッキフロントグリルグリルカバートリム 15インチ サマータイヤ セット【ヴォクシー(80系 5ナンバー)】MANARAY ユーロスピード G10 メタリックグレー 6.0Jx15LEMANS V LM5 195/65R15, 18インチ サマータイヤ セット【適応車種:マークX(120系 全グレード)】WEDS ウェッズスポーツ RN-55M グロスブラック 8.0Jx18NANOエナジー 3プラス 225/45R18, プロジェクトミュー NS-C ブレーキパッド フロント トヨタ セルシオ UCF10/11 4000cc 1989年11月~1992年08月, 車種別専用フロアマット CALMAT(キャルマット) トヨタ アルファード フロアマット トヨタ アルファードハイブリッド 15年7月~20年5月 前期/7人乗-アニマル ゼブラ, マツダ CXー8【純正用品】マッドフラップ(マッドガード/泥よけ)フロント用 左右セットKG系2018/01カタログ掲載分

【REAL レアルステアリング】トヨタ 20系ウィッシュ ウッドコンビ

↓↓↓↓↓↓


↓↓↓↓↓↓



↓↓↓↓↓↓

GRONDEMENT グロンドマン その他シートパーツ 国産シートカバー 張替タイプ カラー:カーボンシルバー・黒/透明ステッチ ツートン ダンク, 16インチ サマータイヤ セット【ヴォクシー(70系 3ナンバー)】MANARAY ユーロストリーム BV25 ブロンザイトレイヤード 6.5Jx16Bluearth AE01F 205/60R16, OVER TECH(オーバーテック) リフトアップコイル(35mmUP) サンバー TT#/TV#/TW#, ミツビシ FTO 94.10~00.7 DE2A(GS) ACRE(アクレ) ブレーキパッド ライトスポーツ 303 リア 左右セット ブレーキ アクレ パッド, YOKOHAMA ヨコハマ ice GUARD6 アイスガード ig60 スタッドレス スタッドレスタイヤ 225/55R18 MANARAY EUROSPEED ユーロスピード G10 ホイールセット 4本 18インチ 18 X 8 +45 5穴 114.3

REAL/レアル ステアリング 70系 ヴォクシ- 後期 R70G/W(2010.4~2014.1 ) オリジナルシリ-ズ ステアリング 3本スポ-クタイプ パールレッドウッド/レッドステッチ;【送料無料 ベンツCクラス(W205)】 225/45R18 18インチ BBS JAPAN BBS RF 8J 8.00-18 DELINTE デリンテ DH2(限定) サマータイヤ ホイール4本セット 輸入車 (クーポン配布中)POSH GSX1300R用 3D-TECHフェンダーレスキット P086090 【送料無料・北海道・沖縄除く】 BLITZ エアクリーナー ADVANCE POWER RX-7 FD3S ブリッツ エアクリーナー;TOYOTIRES トーヨー プロクセス CF2 PROXES サマータイヤ 175/65R15 WEDS ウェッズ ライツレー JT RIZLEY 在庫 ホイールセット 4本 15インチ 15 X 6 +43 5穴 100

【クーポン利用で最大1200円OFF!】FUJITSUBO POWER Getter トヨタ エスティマ ルシーダ/エミーナ TCR10G/TCR11G/TCR20G/TCR21G用 (160-27114)【マフラー】フジツボ パワーゲッター 藤壺技研;[Projectμ] プロジェクトμ ブレーキパッド Bスペック リア用 レクサス IS250 GSE30 13/5~ Fスポーツ除く 2.5L 本州は送料無料 北海道は送料500円(税別) 沖縄・離島は送料1000円(税別)

diagonal()メソッドの使い方

numpy.ndarrayのメソッドとして、対角成分を抽出するdiagonal()もある。

import numpy as np
a = np.arange(9).reshape((3, 3))
print(a)
# [[0 1 2]
# [3 4 5]
# [6 7 8]]
print(a.diagonal())
# [0 4 8]



diagonal()では引数offsetdiag()の引数kに相当する。

print(a.diagonal(offset=1))
# [1 5]
print(a.diagonal(offset=3))
# []
print(a.diagonal(offset=-2))
# [6]



正方行列でない場合も同様 NANKANG TIRE ナンカン NS-2 サマータイヤ 205/40R17 BLEST Eurosport MX Betelg ホイールセット 4本 17インチ 17 X 7 +42 4穴 100。。

a = np.arange(12).reshape((3, 4))
print(a)
# [[ 0 1 2 3]
# [ 4 5 6 7]
# [ 8 9 10 11]]
print(a.diagonal())
# [ 0 5 10]
print(a.diagonal(offset=1))
# [ 1 6 11]



 
 
スポンサーリンク
シェア
Tweet

関連カテゴリー

関連記事

{yahoojp} {note.nkmk.me}
{yahoojp}jpprem01-zenjp40-wl-zd-44325