ホームページ  >  記事  >  バックエンド開発  >  Python の配列とリスト: コロンの使用の概要

Python の配列とリスト: コロンの使用の概要

不言
不言オリジナル
2018-04-18 11:13:085640ブラウズ

以下は Python での配列、リスト、コロンの柔軟な使用方法の紹介です。これは非常に参考になるので、皆さんのお役に立てれば幸いです。一緒に見てみましょう

例を見てみましょう:

import numpy as np
x=np.array([[1,2,3],[5,6,7],[7,8,9]])
print(x)
Out[64]:
array([[1, 2, 3],
  [5, 6, 7],
  [7, 8, 9]])

これは、np 配列を定義するだけです。

print(x[:,::-1])
Out[65]:
[[3 2 1]
 [7 6 5]
 [9 8 7]]

上記のコードは、配列を各次元で逆順に配置する関数を実装しています。 このコードを理解する方法は、ディープ ラーニング スタイルの移行を行うときに発生したものです。問題の 1 つは、画像の rgb を bgr に変更することですが、最初は他の人が書いたコードを見て、transpose の説明については、私のブログを参照してください。ここではそれを説明しますが、transpose は次元であるため、実際には機能しません。そして、なぜ二重コロンが使用できるのかについて考えてみました。以下に説明します。 [:,::-1]、このコードは実際にはインデックスであり、最初のコロン (カンマの前) です。明らかに、最初の次元のすべて、つまりここにあるすべての行を選択し、その後に 2 つのコロンが続きます。たとえば、リスト y=[1,2,3],y[: 2] の場合、結果は [1,2] になります。つまり、最初のコロンは最初のコロンから開始することを意味します。ここのカンマの後の最初のコロンも最初のコロンから始まります。実際、2 番目のコロンは終わりを表し、y=[1,2,3],y[::] になります。結果は次のようになります。 [1,2,3]、3 番目のパラメータは何ですか? 実際、3 番目のパラメータはステップ サイズです。ステップ サイズを 0 にすることはできません。-1 は逆順を意味し、1 の場合はすべてを選択することを意味します。が 2 の場合、1 つおきに取ることを意味します。

次のコードを見てください:

x=np.array([[1,2,3],[5,6,7],[7,8,9]])
print(x)
print('------------')
print(x[:,::-1])
print('------------')
print(x[:,::1])
print('------------')
print(x[:,::2])
print('------------')
print(x[:,::3])
print('------------')
print(x[:,::666666])
x=np.array([[1,2,3],[5,6,7],[7,8,9]])
print(x)
print('------------')
print(x[:,::-1])
print('------------')
print(x[:,::1])
print('------------')
print(x[:,::2])
print('------------')
print(x[:,::3])
print('------------')
print(x[:,::666666])
[[1 2 3]
 [5 6 7]
 [7 8 9]]
------------
[[3 2 1]
 [7 6 5]
 [9 8 7]]
------------
[[1 2 3]
 [5 6 7]
 [7 8 9]]
------------
[[1 3]
 [5 7]
 [7 9]]
------------
[[1]
 [5]
 [7]]
------------
[[1]
 [5]
 [7]]

上記のコードから、x[:,:::666666] が非常に大きい理由は、最初からそうであることがわかります。最初に、次はステップ サイズを表します。66666 と同じくらい大きい場合、実際には、ステップ サイズ 3 からは最初の 1 つしか取得できません。リストについても同様です。

関連する推奨事項:

Python の For ループおよび range 組み込み関数


以上がPython の配列とリスト: コロンの使用の概要の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。