Ndarray(1次元)要素の取得と変更

 この記事は個人の実行記録Noteです。個人的な経験からPythonの基本を初心の方向けに紹介します。

§ プログラミング >変数と演算 >Ndarray(1次元)


*Ndarray に格納されたデータを取得

【表1参照】 Ndarray に格納されたデータを取得には1次元Ndarrayの場合の指定方法はリストやタプルの場合と同じ書式で出来ますが、さらに複合的な指定方法も可能になります。

・位置指定 : [ 位置 ]で指定。0から(データ数-1)までの数で配列の前からの位置を指定する。要素数またはそれ以上の数はエラーになる。指定位置の要素の数値、文字列、論理値などがそのまま取得される。
・マイナス位置指定 : [ - 位置 ]で指定。マイナス1から マイナス(データ数)までの数。配列の最後からの位置を指定する。データ数のマイナスまで指定が可能。 要素数より小さいマイナスの数はエラーになる。 正の位置指定の場合と1ズレるので注意。指定位置の要素の数値、文字列、論理値などがそのまま取得される。
・全範囲の指定  : [ : ]で指定。範囲設定の:(ダブルコロン)だけを引数にした要素の指定は全要素の指定になる。取得した配列は元の配列とは別の配列となるのでcopyと同じ効果になる。新規のNdarray が作られる。
・後方を指定 (要素数以上でも同じ) : [ 開始位置: ]で指定。開始位置から最後までを取得する。新規のNdarray が作られる。
・前方を指定  : [ :終了位置 ]で指定。0番目(最初)から(指定値-1)番目までを取得する。 最後の値は、指定した位置の一つ前の値なので、取得したい位置の次の値を終わり側の引数にする。新規のNdarray が作られる。
・範囲(始:終)を指定 : [ 開始位置:終了位置 ]で指定。 開始位置から(終わり指定値-1)番目までを取得する。 最後の値は、指定した位置の一つ前の値なので、取得したい位置の次の値を終わり側位置を引数にする。新規のNdarray が作られる。
・step間隔で指定 : [ 開始位置:終了位置:step値 ]で指定。 開始位置を最初にして、step値飛ばしで(終わり指定値-1)番目までを取得する。 終わり指定値位置は含まれない。取得したい位置より大きい終わり側位置を引数にする。新規のNdarray が作られる。
・インデックス指定  : [ 位置のコンテナ列記 ]で指定。列記された位置の値の新規のNdarray が作られる。コンテナとしてはタプル、リスト、Ndarray も可能。
・条件一致  : [ 条件 ]で指定。Ndarray に対して判定条件を付けて、正(True)の要素だけを取得する。新規のNdarray が作られる。
・論理判定指定 : [ 論理値のコンテナ列記(要素数) ]で指定。論理値で取得する要素を指定する。Trueの要素だけにアクセスされる。 論理値はコンテナ形式で判定の要素数は元の配列の要素数に一致しないとエラーになる。新規のNdarray が作られる。
・逆順全指定 : [ ::-1 ]で指定。配列の全要素を逆順に指定する。 得られる配列は逆順になる。新規のNdarray が作られる。

*Ndarray の要素値を変更する

 【表2参照】 Ndarray 各要素は、リストと同様に個別に変更が可能となる。表2の取得要素の指定方法に代入演算するのが基本的な変更方法となる。 要素値の変更は、変数のidが変わらない同じ変数とされる。 変更前に取得した要素値が、後で実行した要素値の変更によって変わることがあるので注意する。

・位置(マイナス位置)指定変更  : [ 位置 ]で指定。データ取得の位置指定で代入を行う。マイナスでの位置指定も同じ。
・全部変更 : [ : ]で指定。全要素の変更。要素の数は同じでないとエラー。 変数のidは変わらない。
・範囲指定(後方、前方、step)の要素変更  : [ 開始位置:終了位置:step値 ]で指定。データ取得と同じ範囲指定方法で代入を行う。 後方、前方の指定でも同じ。引数のstep値を省略すればSTEP=1 として指定範囲の全てとなる。 変更値として代入する要素の数が、指定した要素の数に一致していないとエラーになる。
・インデックス指定 : [ 位置のコンテナ列記 ]で指定。指定した要素の値が変更される。 指定されていない要素は変わらない。変更値として代入する要素の数が、指定した要素数に一致していないとエラーになる。
・条件判定の変更 : [ 条件 ]で指定。 配列に対しての判定条件で正(True)の要素が変更される。 不一致の要素は変わらない。変更値として代入する要素の数が、指定した要素数に一致していないとエラーになる。
・論理判定の変更 :[ 論理値のコンテナ列記(要素数) ]で指定。 True と指定された位置の要素が変更される。 False 指定の要素は変わらない。変更値として代入する要素の数が、True指定した要素数に一致していないとエラーになる。
・逆順の全変更 : [ ::-1 ]で指定。逆順にして全部を変更。idは変わらない。


*新規Ndarrayとidの変わらない要素変更

 Ndarray を作る時に、作りたいNdarray配列を直接作れる生成メソッドがない場合は、目的とするNdarray配列に近い Ndarray を使って変更することになります。 Ndarray の修正方法としては、Ndarray のコピー、追加、削除 などの方法 (* 記事:Ndarray(1次元)の生成と要素の追加、削除、コピー )  と、上記の説明の要素値の変更を使うことが出来ます。
 リストでは、.clear、.append、 .extend、 insert remove del などのメソッドがあり、これらのメソッドではリストのidは変化しないで、同一の変数として取り扱われます(*記事:リストの作成、要素の追加・削除、アクセスと変更 )。 一方で、Ndarray にはこれらに対応するメソッドが無く、Numpy の関数で対応することになります。

 Ndarray のid の変化を見たのが表3です。
 ・ Ndarray でコピー、追加、削除などの関数使うと、別のidとなり、新しいNdarray が生成します。
 ・ Ndarray で要素値の変更メソッドを使った場合は、Ndarray のid は変化せずに同じ変数扱いとなります。


以上


IG.Python Note

PythonプログラミングのためのTips集です。 趣味のPythonプログラミングをしていると、必要なプログラミング情報を自分で取集することが必要になります。 集めた情報を整理しておくと便利なので、個人的な学習メモとして記録を作りました。

0コメント

  • 1000 / 1000