概要
携帯電話にお気に入りの曲のプレイリストがあると想像してください。 このプレイリストは、各曲が特定の順序で配置されたリストです。 最初の曲を再生したり、XNUMX 番目の曲にスキップしたり、XNUMX 番目の曲にジャンプしたりすることができます。 このプレイリストは、コンピューター プログラミングの配列によく似ています。
配列は、最も基本的で広く使用されているデータ構造の XNUMX つです。
本質的に、配列は複数の項目 (数値、文字、その他の配列など) を特定の順序で格納するための構造化された方法であり、その位置 (インデックス) がわかっていれば、どの項目にもすばやくアクセス、変更、削除できます。
このガイドでは、配列データ構造の包括的な概要を説明します。 まず最初に、配列とは何なのか、そしてその主な特徴は何なのかを見ていきます。 次に、Python の世界に移り、実際のシナリオで配列がどのように実装、操作、および適用されるかを調べます。
配列のデータ構造を理解する
配列は、コンピューター サイエンスとプログラミングで使用される最も古く、最も基本的なデータ構造の XNUMX つです。 そのシンプルさと特定の操作の効率性により、データ管理と操作の分野を深く掘り下げる人にとって重要なトピックとなっています。
配列は項目のコレクションであり、通常は 同型に保存されています 連続したメモリ位置.
この連続ストレージにより、配列は、インデックスが指定されている任意の要素への定時アクセスを提供できます。 配列内の各項目は と呼ばれます。 素子、配列内の要素の位置は、その要素によって定義されます。 index、通常は ゼロから始まる.
たとえば、整数の配列を考えてみましょう。 [10, 20, 30, 40, 50]
。 ここで、要素は、 20
のインデックスがあります 1
:
複数あります 利点 データを保存するために配列を使用する方法。 たとえば、メモリ レイアウトにより、配列では次のことが可能になります。 O(1) インデックスによって要素にアクセスするときの (一定の) 時間計算量。 これは、要素へのランダム アクセスが必要な場合に特に有益です。 さらに、配列は次の場所に保存されます。 連続したメモリ位置これにより、キャッシュの局所性が向上し、特定の操作における全体的なパフォーマンスの向上につながる可能性があります。 配列を使用するもう XNUMX つの注目すべき利点は、配列は一度宣言されると固定サイズになるため、メモリの管理が容易になり、予期しないオーバーフローやメモリ不足エラーを回避できることです。
Note: 配列は、次のようなシナリオで特に役立ちます。 コレクションのサイズは事前にわかっており、一定のままです、またはランダムアクセスが挿入や削除よりも頻繁に行われる場合。
一方、配列には独自のセットが付属しています。 制限。 従来のアレイの主な制限の XNUMX つは、 固定サイズ。 配列が作成されると、そのサイズは変更できません。 これにより、メモリの浪費 (配列が大きすぎる場合) やサイズ変更の必要性 (配列が小さすぎる場合) などの問題が発生する可能性があります。 それに加えて、配列の途中で要素を挿入または削除するには要素を移動する必要があるため、 O(N) これらの操作の時間の複雑さ。
これをすべてまとめるために、このガイドの最初にある曲のプレイリストの例を使用して、配列の主な特性を説明しましょう。 配列は次のようなデータ構造です。
-
インデックスが付けられています: プレイリストの各曲に番号 (1、2、3、…) があるのと同じように、配列内の各要素にはインデックスがあります。 ただし、ほとんどのプログラミング言語では、インデックスは 0 から始まります。つまり、最初の項目はインデックス 0、1 番目の項目はインデックス XNUMX というようになります。
-
固定サイズあり: たとえば 10 曲のプレイリストを作成する場合、最初に 11 曲を削除しないと XNUMX 曲目を追加できません。 同様に、配列のサイズは固定です。 特定のサイズの配列を作成すると、その容量を超える項目を追加することはできません。
-
均質である: プレイリスト内のすべての曲は音楽トラックです。 同様に、配列内のすべての要素は同じ型です。 整数の配列がある場合、そこにテキスト文字列を突然格納することはできません。
-
直接アクセス可能: プレイリストの 7 番目の曲を聴きたい場合は、その曲に直接ジャンプできます。 同様に、配列の場合、インデックスがわかっていれば、任意の要素に即座にアクセスできます。
-
連続したメモリ: これはもう少し技術的な話になります。 配列がコンピューターのメモリ内に作成されると、その配列はメモリの連続ブロックを占有します。 学校の隣り合ったロッカーの列のようなものだと考えてください。 各ロッカーは隙間なく隣り合っています。
Python と配列
柔軟性と使いやすさで知られる Python は、配列を操作するための複数の方法を提供します。 Python には他の言語のようなネイティブの配列データ構造はありませんが、同様に機能し、さらには拡張機能を提供できる強力な代替手段が提供されます。
一目見ただけで、 パイソンのリスト 配列と同義に見えるかもしれませんが、考慮すべき微妙な違いやニュアンスがあります。
リスト | 配列 |
---|---|
組み込みの Python データ構造 | Python ではネイティブではありません - `array` モジュールから来ています |
ダイナミックサイズ | 固定(定義済み)サイズ |
さまざまなデータ型のアイテムを保持できる | 同じ種類のアイテムを保持する |
操作用のさまざまな組み込みメソッドを提供する | 外部モジュールをインポートする必要がある |
O(1) アクセス操作の時間の複雑さ | O(1) アクセス操作の時間の複雑さ |
より多くのメモリを消費する | メモリ効率の向上 |
この表を見ると、次のような疑問が自然に生まれます。 「いつどれを使うの?」。 動的に拡大または縮小でき、混合データ型を保持できるコレクションが必要な場合は、Python のリストが最適です。 ただし、同じ型の要素を含むよりメモリ効率の高いコレクションが必要なシナリオでは、Python の使用を検討することをお勧めします。 array
モジュールまたは NumPy などの外部ライブラリ。
配列 Pythonのモジュール
ほとんどの開発者は、Python で配列について考えるとき、デフォルトでリストについて考えることがよくあります。 ただし、Python は組み込みの関数を通じて、より特殊な配列構造を提供します。 array
モジュール。 このモジュールは、Python の基本的な C スタイル データ型のスペース効率の高いストレージを提供します。
Python リストは非常に汎用性が高く、あらゆる種類のオブジェクトを保存できますが、特に整数や浮動小数点などの基本的なデータ型のコレクションのみを保存する必要がある場合には、過剰になる場合があります。 の array
モジュールは、特定のデータ型のリストよりもメモリ効率の高い配列を作成する方法を提供します。
配列の作成
使用するには array
モジュールの場合は、まずインポートする必要があります。
from array import array
インポートしたら、次を使用して配列を作成できます。 array()
ビルダー:
arr = array('i', [1, 2, 3, 4, 5])
print(arr)
ここで、 'i'
引数は、配列に署名されたデータを格納することを示します 整数。 他にもいくつかのタイプ コードが利用可能です。 'f'
フロートと 'd'
ダブルス用。
要素へのアクセスと変更
リストの場合と同じように、配列内の要素にアクセスして変更できます。
print(arr[2])
次に、要素の値を次のように変更して要素を変更しましょう。 6
:
arr[2] = 6
print(arr)
配列メソッド
array
モジュールには、配列を操作するためのいくつかのメソッドが用意されています。
-
append()
– 配列の末尾に要素を追加します。arr.append(7) print(arr)
-
extend()
– 反復可能な要素を末尾に追加します。arr.extend([8, 9]) print(arr)
-
pop()
– 指定された位置にある要素を削除して返します。arr.pop(2) print(arr)
-
remove()
: 指定された値の最初の出現を削除します:arr.remove(2) print(arr)
-
reverse()
: 配列の順序を逆にします。arr.reverse() print(arr)
注: ここにリストした以外にも多くの方法があります。 を参照してください。 Pythonの公式ドキュメント で使用可能なすべてのメソッドのリストを表示するには、 array
モジュールを開きます。
一方、 array
モジュールは、基本的なデータ型を格納するためのよりメモリ効率の高い方法を提供します。そのモジュールを覚えておくことが重要です。 制限。 リストとは異なり、配列は 。 これは、配列内のすべての要素が同じ型である必要があることを意味します。 また、保管のみ可能です。 基本的な C スタイルのデータ型 配列で。 カスタム オブジェクトまたは他の Python タイプを保存する必要がある場合は、リストまたは別のデータ構造を使用する必要があります。
NumPy 配列
NumPy (Numerical Python の略) は、Python での数値計算のための基礎パッケージです。 その主な特徴の XNUMX つは、その強力な機能です。 N次元配列オブジェクト、数学的、論理的、形状操作などを含む、配列に対する高速な操作を提供します。
NumPy 配列は Python の組み込み配列よりも多用途です
array
モジュールであり、データ サイエンスおよび機械学習プロジェクトの定番です。
NumPy 配列を使用する理由
最初に頭に浮かぶのは パフォーマンス。 NumPy 配列は C で実装されており、最適化されたアルゴリズムと連続メモリ ストレージの利点により、効率的なメモリ ストレージと高速な操作が可能になります。
Python の組み込みリストと配列は XNUMX 次元ですが、NumPy 配列は 多次元、行列やテンソルを表現するのに最適です。
ベストプラクティス、業界で認められた標準、および含まれているチートシートを含む、Gitを学習するための実践的で実用的なガイドを確認してください。 グーグルGitコマンドを停止し、実際に 学ぶ それ!
最後に、NumPy は 膨大な機能 基本的な算術演算から高度な数学演算、再形成、分割などまで、これらの配列を操作します。
注: データのサイズが事前にわかっている場合は、配列 (特に NumPy) にメモリを事前に割り当てると、パフォーマンスの向上につながる可能性があります。
NumPy 配列の作成
NumPy を使用するには、まずそれをインストールする必要があります (pip install numpy
) そしてそれをインポートします。
import numpy as np
インポートしたら、次を使用して NumPy 配列を作成できます。 array()
関数:
arr = np.array([1, 2, 3, 4, 5])
print(arr)
多次元配列を作成することもできます。
matrix = np.array([[1, 2, 3], [4, 5, 6], [7, 8, 9]])
print(matrix)
これは私たちに与えるでしょう:
[[1 2 3] [4 5 6] [7 8 9]]
配列を作成するこれらの基本的な方法に加えて、NumPy は配列を作成するための他の賢い方法を提供します。 そのうちの XNUMX つは、 arange()
方法。 定期的に値が増加する配列を作成します。
arr = np.arange(10)
print(arr)
もうXNUMXつは linspace()
このメソッドは、指定された開始値と終了値の間で等間隔に配置された、指定された数の要素を含む配列を作成します。
even_space = np.linspace(0, 1, 5)
print(even_space)
要素へのアクセスと変更
NumPy 配列内の要素へのアクセスと変更は直感的に行えます。
print(arr[2]) arr[2] = 6
print(arr)
多次元配列に対してもほぼ同じことを行います。
print(matrix[1, 2]) matrix[1, 2] = 10
print(matrix)
XNUMX行目の要素(インデックス)の値を変更します。 1
) と XNUMX 番目の列 (インデックス 2
):
[[1 2 3] [4 5 20] [7 8 9]]
配列の形状の変更
NumPy は、配列を操作および操作するための多くの関数とメソッドを提供します。 たとえば、次のように使用できます。 reshape()
メソッド 配列の形状を変更する。 単純な配列があるとします。
import numpy as np arr = np.array([1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12])
print("Original Array:")
print(arr)
そして、それを 3×4 行列に再形成したいと思います。 あなたがしなければならないのは、 reshape()
必要な寸法を引数として渡すメソッド:
reshaped_arr = arr.reshape(3, 4)
print("Reshaped Array (3x4):")
print(reshaped_arr)
これは次の結果になります:
Reshaped Array (3x4):
[[ 1 2 3 4] [ 5 6 7 8] [ 9 10 11 12]]
行列の乗算
numpy.dot()
メソッドが使用されるのは 行列乗算。 XNUMX つの配列のドット積を返します。 XNUMX 次元配列の場合は、 内部製品 配列の。 2 次元配列の場合、これは次と同等です。 行列乗算、NDの場合は、 和積 最初の配列の最後の軸と XNUMX 番目の配列の最後から XNUMX 番目の軸にわたって実行されます。
どのように機能するかを見てみましょう。 まず、1 つの XNUMX 次元配列のドット積 (ベクトルの内積) を計算しましょう。
import numpy as np vec1 = np.array([1, 2, 3])
vec2 = np.array([4, 5, 6])
dot_product_1d = np.dot(vec1, vec2) print("Dot product of two 1-D arrays:")
print(dot_product_1d)
これは次の結果になります:
Dot product of two 1-D arrays:
32
32
実際、これは XNUMX つの配列の内積です。 (14 + 25 + 3*6)。 次に、2 つの XNUMX 次元配列の行列乗算を実行できます。
mat1 = np.array([[1, 2], [3, 4]])
mat2 = np.array([[2, 0], [1, 3]])
matrix_product = np.dot(mat1, mat2) print("Matrix multiplication of two 2-D arrays:")
print(matrix_product)
それは私たちに与えるでしょう:
Matrix multiplication of two 2-D arrays:
[[ 4 6] [10 12]]
NumPy 配列は、Python の組み込みリストよりも大幅に進歩しています。 array
特に科学的および数学的計算用のモジュール。 NumPy ライブラリが提供する豊富な機能とその効率性により、Python で数値演算を実行したい人にとって不可欠なツールとなっています。
まとめ
コンピューター サイエンスとプログラミングの基礎である配列は、さまざまなアプリケーションやドメインにわたってその価値を何度も証明してきました。 Python では、この基本的なデータ構造は、リストなどのさまざまな具体化を通じて、 array
モジュールと強力な NumPy 配列は、開発者に効率性、多用途性、シンプルさの融合を提供します。
このガイドでは、配列の基本的な概念から Python での実際のアプリケーションまでを説明してきました。 メモリが連続しているという性質を持つ配列がどのようにアクセス時間を短縮するのか、また Python の動的リストがどのように柔軟性の層をもたらすのかを見てきました。 また、配列が数値計算のための強力なツールに変わる NumPy の特殊な世界についても詳しく掘り下げました。
- SEO を活用したコンテンツと PR 配信。 今日増幅されます。
- PlatoData.Network 垂直生成 Ai。 自分自身に力を与えましょう。 こちらからアクセスしてください。
- プラトアイストリーム。 Web3 インテリジェンス。 知識増幅。 こちらからアクセスしてください。
- プラトンESG。 カーボン、 クリーンテック、 エネルギー、 環境、 太陽、 廃棄物管理。 こちらからアクセスしてください。
- プラトンヘルス。 バイオテクノロジーと臨床試験のインテリジェンス。 こちらからアクセスしてください。
- 情報源: https://stackabuse.com/guide-to-arrays-in-python/
- :持っている
- :は
- :not
- :どこ
- $UP
- 1
- 10
- 11
- 12
- 13
- 16
- 20
- 25
- 30
- 32
- 40
- 50
- 7
- 8
- 9
- a
- 私たちについて
- アクセス
- アクセス
- 越えて
- 実際に
- 加えます
- 追加されました
- さらに
- 追加
- 隣接
- 進める
- 高度な
- 利点
- 再び
- 警告
- アルゴリズム
- すべて
- 許す
- ことができます
- また
- 選択肢
- 間で
- an
- および
- 別の
- どれか
- 誰も
- 適用された
- です
- 引数
- 引数
- 配列
- AS
- 頼む
- At
- 利用できます
- 避ける
- 軸
- 基本
- BE
- 開始
- 有益な
- 利点
- ほかに
- より良いです
- の間に
- ビット
- ブロック
- 国境
- 持って来る
- 内蔵
- 焙煎が極度に未発達や過発達のコーヒーにて、クロロゲン酸の味わいへの影響は強くなり、金属を思わせる味わいと乾いたマウスフィールを感じさせます。
- by
- キャッシュ
- 呼ばれます
- 缶
- 機能
- 容量
- 一定
- 変化する
- 変更
- 変化
- 特性
- 文字
- コード
- コレクション
- コラム
- 組み合わせた
- 来ます
- comes
- 複雑さ
- 包括的な
- 計算
- 計算
- 計算
- コンピュータ
- コンピュータサイエンス
- コンセプト
- 結論
- 検討
- 定数
- 連続的な
- 礎石
- 作ります
- 作成した
- 作成します。
- カスタム
- データ
- データ管理
- データサイエンス
- データ構造
- デフォルト
- 定義済みの
- 希望
- 開発者
- の違い
- 異なります
- 大きさ
- 直接
- 直接に
- do
- ありません
- ドメイン
- DOT
- ダブルス
- 原因
- ダイナミック
- 動的に
- 各
- 緩和する
- 使いやすさ
- 容易
- 効率
- 効率的な
- 素子
- 要素は
- end
- 平等に
- 同等の
- エラー
- 特に
- 本質
- 本質的な
- さらに
- 例
- 探る
- 外部
- 実際
- スピーディー
- 速いです
- お気に入り
- 特徴
- 名
- 固定の
- 柔軟性
- フォーカス
- 頻繁な
- から
- function
- 機能性
- 機能
- 基本的な
- ギャップ
- Gitの
- 与える
- 与えられた
- ひと目
- Go
- 成長する
- ガイド
- 実践的な
- 持ってる
- こちら
- ホバー
- 認定条件
- しかしながら
- HTML
- HTTPS
- i
- ICON
- 理想
- if
- 説明します
- 実装
- import
- 改善
- in
- 含まれました
- 含めて
- 信じられないほど
- index
- 索引付けされた
- を示し
- install
- 瞬時に
- に
- 概要
- 直観的な
- 問題
- IT
- リーディングシート
- ITS
- ジャンプ
- ただ
- 知っている
- 既知の
- ESL, ビジネスESL <br> 中国語/フランス語、その他
- 大
- 姓
- 層
- レイアウト
- つながる
- 主要な
- 学習
- う
- LG
- ライブラリ
- 図書館
- ような
- 制限
- リスト
- リストされた
- リスト
- ll
- ロッカー
- 論理的な
- 見て
- 探して
- たくさん
- 機械
- 機械学習
- メイン
- 作る
- 作成
- 管理します
- 管理
- 操作
- 操作
- 多くの
- 数学的
- マトリックス
- 手段
- メモリ
- 方法
- メソッド
- 真ん中
- かもしれない
- マインド
- 混合
- 修正する
- モジュール
- 他には?
- 最も
- ずっと
- の試合に
- 音楽を聴く際のスピーカーとして
- しなければなりません
- ネイティブ
- 自然
- 必要
- 次の
- いいえ
- 注目すべき
- 今
- ニュアンス
- 数
- 番号
- numpy
- オブジェクト
- オブジェクト
- 占める
- 発生
- of
- 提供
- オファー
- 頻繁に
- 最も古い投稿
- on
- かつて
- ONE
- の
- 操作する
- 業務執行統括
- 最適化
- or
- 注文
- オリジナル
- その他
- 私たちの
- でる
- が
- 全体
- 概要
- 自分の
- パッケージ
- 特に
- 渡された
- 実行する
- パフォーマンス
- 電話
- プラトン
- プラトンデータインテリジェンス
- プラトデータ
- プレイ
- 位置
- 強力な
- 実用的
- かなり
- 主要な
- プロダクト
- プログラミング
- プログラミング言語
- プロジェクト(実績作品)
- 実績のある
- 提供します
- 提供
- は、大阪で
- Python
- すぐに
- ランダム
- 範囲
- 急速な
- 現実の世界
- realm
- 参照する
- 定期的に
- 残っている
- 覚えています
- 削除します
- 除去
- 表します
- 必要
- 形を変える
- 形を整える
- 結果
- 収益
- 富裕層
- リング
- 行
- s
- 同じ
- 言う
- シナリオ
- 学校
- 科学
- 科学的な
- 二番
- 思われる
- 見て
- セッションに
- いくつかの
- Shadow
- 形状
- シート
- シフト
- ショート
- 側
- 署名されました
- 重要
- 同様に
- 簡単な拡張で
- 単純
- から
- サイズ
- 小さい
- So
- 一部
- 時々
- 歌
- 専門の
- 特定の
- 指定の
- スタックアバス
- スタンド
- 規格
- ステープル
- 開始
- 手順
- Force Stop
- ストレージ利用料
- 店舗
- 保存され
- 文字列
- 構造
- 構造化された
- 構造
- そのような
- SVG
- 同義語
- テーブル
- 取る
- 技術的
- 클라우드 기반 AI/ML및 고성능 컴퓨팅을 통한 디지털 트윈의 기초 – Edward Hsu, Rescale CPO 많은 엔지니어링 중심 기업에게 클라우드는 R&D디지털 전환의 첫 단계일 뿐입니다. 클라우드 자원을 활용해 엔지니어링 팀의 제약을 해결하는 단계를 넘어, 시뮬레이션 운영을 통합하고 최적화하며, 궁극적으로는 모델 기반의 협업과 의사 결정을 지원하여 신제품을 결정할 때 데이터 기반 엔지니어링을 적용하고자 합니다. Rescale은 이러한 혁신을 돕기 위해 컴퓨팅 추천 엔진, 통합 데이터 패브릭, 메타데이터 관리 등을 개발하고 있습니다. 이번 자리를 빌려 비즈니스 경쟁력 제고를 위한 디지털 트윈 및 디지털 스레드 전략 개발 방법에 대한 인사이트를 나누고자 합니다.
- より
- それ
- 世界
- アプリ環境に合わせて
- それら
- その後
- そこ。
- ボーマン
- 彼ら
- もの
- 考える
- 考え
- 三番
- この
- 介して
- 時間
- <font style="vertical-align: inherit;">回数</font>
- 〜へ
- あまりに
- ツール
- 豊富なツール群
- トピック
- 伝統的な
- 最適化の適用
- 遷移
- true
- 2
- type
- 一般的に
- 予期しない
- 異なり、
- us
- つかいます
- 中古
- 通常
- 値
- 価値観
- さまざまな
- Ve
- 多才な
- 汎用性
- 欲しいです
- 仕方..
- 方法
- we
- WELL
- この試験は
- いつ
- which
- while
- 広く
- 意志
- 無し
- 仕事
- 作品
- 世界
- 価値
- でしょう
- You
- あなたの
- ゼファーネット