Python Numpyライブラリによる配列の操作を詳しく解説
1. はじめに
NumPy (数値 Python) は、大規模な関数をサポートする Python 言語の拡張ライブラリです。多数の次元配列および行列演算に加えて、配列演算用の多数の数学関数ライブラリを提供します。主なデータ構造は ndarray 配列です。
NumPy は、SciPy (科学的 Python) および Matplotlib (プロット ライブラリ) と一緒によく使用され、MatLab の代替として広く使用されている組み合わせです。
SciPy は、オープンソースの Python アルゴリズム ライブラリおよび数学ツールキットです。 SciPy には、最適化、線形代数、積分、補間、特殊関数、高速フーリエ変換、信号処理と画像処理、常微分方程式の解法、および科学と工学で一般的に使用されるその他の計算のためのモジュールが含まれています。
Matplotlib は、Python プログラミング言語とその数値数学拡張パッケージ NumPy の視覚的な操作インターフェイスです。
2. Create
1 次元配列の作成
(1) 直接作成: np.array([1, 2, 3, 4 , 5, 6])
(2) Python リストから作成: np.array(list([1, 2, 3, 4, 5, 6]))
定数の作成 One -value の次元データ
(1) 0 で定数値を作成します: np.zeros(n,dytpe=float/int)
(2) で定数値を作成します。 1 値: np.ones(n)
(3) 空の配列を作成します: np.empty(4)
要素を増やした配列を作成します
( 1) 0 から始まる増分配列: np.arange(8)
(2) 指定された間隔、カスタム ステップ サイズ: np.arange(0,1,0.2)
(3)間隔を指定して、数値をカスタマイズします: np.linspace(-1,1,50)
多次元配列の作成: 単次元配列を作成し、それを多次元配列に追加します
# 数组的结构一定是np.array([]) 无论数组中间存放的是多少“层”数据 # 二维数组相当于存放的是“两层”数组而已 arr1=np.array(list([1, 2, 3, 4, 5])) arr2=np.array([arr1,[1,0,0,1,0]]) # 2*5的两维数组 arr3=np.array(list([[0,0,1,1,1],[1,1,1,0,0],[2,3,4,5,6]])) # 3*5的两维数组 arrx=np.array([arr1,list([1, 2, 3, 4, 5],[1,1,1,0,0])]) # 报错 arry=np.array([list([[ 1,2,3, 7, 11],[2,3,4,5,6]]),[1, 2, 3, 4, 5]]) # 报错
関連する推奨事項: 「Python ビデオ チュートリアル 」
定数値を使用した (n*m) 次元のデータの作成
(1) 作成定数値 0: np.zeros((n*m),dytpe=float/int)
(2) 定数値 1 を作成: np.ones((n*m))
(3 )空の配列を作成します: np.empty((n*m))
乱数の配列を作成します
乱数シードを生成します:
(1) np.random.seed()
(2) np.random.RandomState()
乱数を生成します:
Yes 正規分布のランダム配列を生成します
(1) 二項分布: np.random.binomial(n, p, size)
(2) 正規分布: np .random.normal(loc ,scale, size)
csv ファイルを配列または配列に変換します
Use np.genfromtxt('csv file name', delimiter = 'delimiter in the file') 関数 ファイルを配列に変換します
csv_array = np.genfromtxt('sample.csv', delimiter=',') print(csv_array)
3. 配列の変換
配列/行列転置の関数を生成します。行番号と列番号。.T
a = np.array([[32, 15, 6, 9, 14], [12, 10, 5, 23, 1], [2, 16, 13, 40, 37]]) print(a.T) ------------------- # 结果如下 [[32 12 2] [15 10 16] [ 6 5 13] [ 9 23 40] [14 1 37]]
配列の形状を変更します。
(1) arr.resize(n,m): arr.resize(n,m) 関数配列をその場で変更します。要件: 要素の数が一貫している必要があります
a=np.arange(8) a.resize(2,4) print(a) --------------------------- [[0 1 2 3] [4 5 6 7]]
(2) arr.reshape(n,m): 特定の次元のパラメーターが -1 の場合、合計が要素の数は、もう一方の次元に基づいて計算されます。
a=np.arange(8).reshape(-1,1) print(a) ----------------- [[0] [1] [2] [3] [4] [5] [6] [7]]
Will one 次元を 2 次元に上げる: np.newaxis
np.newaxis は、実際には次元を直接増やすことを意味します。配列にあまり多くの次元を追加しないでください。1 次元を 2 次元に増やす例を次に示します:
(1) 行の次元を増やします: arr[np.newaxis, :]
( 2) 列の次元を増やします: arr[:, np.newaxis]
a=np.arange(8) a # array([0, 1, 2, 3, 4, 5, 6, 7]) a.shape # (8,) a[np.newaxis, :] # array([[0, 1, 2, 3, 4, 5, 6, 7]]) a.shape # (8,) a[: , np.newaxis] # array([[0],[1],[2],[3],[4],[5],[6],[7]]) a.shape # (8,)
次元削減: 次元を削減する場合の arr.ravel()
arr.ravel() 関数: デフォルトは行順に新しい配列を生成します (つまり、行ごとに読み取ります)。パラメーター "F" が渡されると、列の順序が減らされます。次元は新しい配列を生成します
a=np.array([[1,2],[3,4]]) a.ravel() a.ravel('F') ---------------------------- # 结果 array([1, 2, 3, 4]) # 结果 array([1, 3, 2, 4])
4。計算
配列に対する計算演算の実行
##(1) 要素の加算と減算a=np.arange(8).reshape(2,4) # array([[0, 1, 2, 3], [4, 5, 6, 7]]) b=np.random.randint(8,size=(2,4)) # array([[1, 2, 5, 3], [4, 1, 0, 6]]) a+b a-b ---------------------------- # a+b和a-b结果分别是: array([[ 1, 3, 7, 6], [ 8, 6, 6, 13]]) array([[-1, -1, -3, 0], [ 0, 4, 6, 1]])
a=np.arange(8).reshape(2,4) # array([[0, 1, 2, 3], [4, 5, 6, 7]]) b=np.random.randint(8,size=(2,4)) # array([[1, 2, 5, 3], [4, 1, 0, 6]]) a**2 a*b ----------------------- # a矩阵平方/a*b矩阵中元素相乘结果分别: array([[ 0, 1, 4, 9], [16, 25, 36, 49]]) array([[ 0, 2, 10, 9], [16, 5, 0, 42]])
# 要求a矩阵的行要等于b矩阵的列数;且a矩阵的列等于b矩阵的行数 a=np.arange(8).reshape(2,4) # array([[0, 1, 2, 3], [4, 5, 6, 7]]) b=np.random.randint(8,size=(4,2)) # array([[3, 0],[3, 3],[5, 6],[6, 7]]) c1 = np.dot(a,b) c2 = a.dot(b) ---------------------- # ab矩阵相乘的结果:c1=c2 array([[ 31, 36], [ 99, 100]])
# 结果返回:一个数组,其中每个元素根据逻辑判断的布尔类型的结果 a > 3 ----------------------------- # 结果如下: array([[False, False, False, False], [ True, True, True, True]])
5. Value
1 次元配列の要素を取得: 操作はリスト lista = np.array([5, 2, 7, 0, 11]) a[0] # 结果为 5 a[:4] # 结果为 从头开始到索引为4结束 a[2:] # 结果为 从索引为2的开始到结尾 a[::2] # 结果为 从头开始到结尾,每2个取一个值
a = np.array([[32, 15, 6, 9, 14], [12, 10, 5, 23, 1], [2, 16, 13, 40, 37]]) a[2,1] # 结果是一个元素 16 a[2][1] # 结果是一个元素 16 a[1] # 第2行 array([12, 10, 5, 23, 1]) a[:,2] # 取出全部行,第2列 [15,10,16] a[1:3, :] # 取出[1,3)行,全部列 a[1,1:] # array([10, 5, 23, 1])
論理演算を満たす
# 需要注意的是,我们数据进行逻辑计算操作得到的仍然是一个数组 # 如果我们想要的是一个过滤后的数组,就需要将"逻辑判断"传入数组中 a = np.array([[32, 15, 6, 9, 14], [12, 10, 5, 23, 1], [2, 16, 13, 40, 37]]) a[a > 3] a[(a > 3) | (a < 2)] ------------------------------ # 结果分别是: array([32, 15, 6, 9, 14, 12, 10, 5, 23, 16, 13, 40, 37]) array([32, 15, 6, 9, 14, 12, 10, 5, 23, 1, 16, 13, 40, 37])
を取得します トラバーサル: 結果は行に出力されます
a = np.array([[32, 15, 6, 9, 14], [12, 10, 5, 23, 1], [2, 16, 13, 40, 37]]) for x in a: print(x) -------------------- [32 15 6 9 14] [12 10 5 23 1] [ 2 16 13 40 37]
コピー: arr.cope()
分割:
(1) 等しい部分: np. split(arr, n, axis=0 /1) (つまり、行数または列数を n で均等に分割できる場合のみ)
(2) 不等分割:np.array_split(arr, n ) デフォルトは行ごとに n 個の部分に分割されます
a = np.array([[32, 15, 6, 9, 14, 21], [12, 10, 5, 23, 1, 10], [2, 16, 13, 40, 37, 8]]) # 可以看到a矩阵是(3*6),所以使用np.split()只能尝试行分成3份;或者列分成2/3/6份 np.split(a,3,axis=0) np.split(a,3,axis=1) np.array_split(a,2) np.array_split(a,4,axis=1) ------------------------------------------- [array([[32, 15, 6, 9, 14, 21]]), array([[12, 10, 5, 23, 1, 10]]), array([[ 2, 16, 13, 40, 37, 8]])] [array([[32, 15], [12, 10], [ 2, 16]]), array([[ 6, 9], [ 5, 23], [13, 40]]), array([[14, 21], [ 1, 10], [37, 8]])] [array([[32, 15, 6, 9, 14, 21], [12, 10, 5, 23, 1, 10]]), array([[ 2, 16, 13, 40, 37, 8]])] [array([[32, 15], [12, 10], [ 2, 16]]), array([[ 6, 9], [ 5, 23], [13, 40]]), array([[14], [ 1], [37]]), array([[21], [10], [ 8]])]
Merge: np.concatenate((arr1, arr2, arr3), axis=0/1) デフォルトは、データ
a=np.random.rand(2,3) b=np.random.randint(1,size=(2,3)) np.concatenate((a,b,a)) # 接在下面 np.concatenate((a,b,a),axis=1) # 接在后面 ------------------------ array([[0.95912866, 0.81396527, 0.809493 ], [0.4539276 , 0.24173315, 0.63931439], [0. , 0. , 0. ], [0. , 0. , 0. ], [0.95912866, 0.81396527, 0.809493 ], [0.4539276 , 0.24173315, 0.63931439]]) array([[0.95912866, 0.81396527, 0.809493 , 0. , 0. , 0. , 0.95912866, 0.81396527, 0.809493 ], [0.4539276 , 0.24173315, 0.63931439, 0. , 0. , 0. , 0.4539276 , 0.24173315, 0.63931439]])
以上がPython Numpyライブラリによる配列の操作を詳しく解説の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ホットAIツール

Undresser.AI Undress
リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover
写真から衣服を削除するオンライン AI ツール。

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

Video Face Swap
完全無料の AI 顔交換ツールを使用して、あらゆるビデオの顔を簡単に交換できます。

人気の記事

ホットツール

メモ帳++7.3.1
使いやすく無料のコードエディター

SublimeText3 中国語版
中国語版、とても使いやすい

ゼンドスタジオ 13.0.1
強力な PHP 統合開発環境

ドリームウィーバー CS6
ビジュアル Web 開発ツール

SublimeText3 Mac版
神レベルのコード編集ソフト(SublimeText3)

ホットトピック









PHPは主に手順プログラミングですが、オブジェクト指向プログラミング(OOP)もサポートしています。 Pythonは、OOP、機能、手続き上のプログラミングなど、さまざまなパラダイムをサポートしています。 PHPはWeb開発に適しており、Pythonはデータ分析や機械学習などのさまざまなアプリケーションに適しています。

PHPはWeb開発と迅速なプロトタイピングに適しており、Pythonはデータサイエンスと機械学習に適しています。 1.PHPは、単純な構文と迅速な開発に適した動的なWeb開発に使用されます。 2。Pythonには簡潔な構文があり、複数のフィールドに適しており、強力なライブラリエコシステムがあります。

VSコードはPythonの書き込みに使用でき、Pythonアプリケーションを開発するための理想的なツールになる多くの機能を提供できます。ユーザーは以下を可能にします。Python拡張機能をインストールして、コードの完了、構文の強調表示、デバッグなどの関数を取得できます。デバッガーを使用して、コードを段階的に追跡し、エラーを見つけて修正します。バージョンコントロールのためにGitを統合します。コードフォーマットツールを使用して、コードの一貫性を維持します。糸くずツールを使用して、事前に潜在的な問題を発見します。

VSコードはWindows 8で実行できますが、エクスペリエンスは大きくない場合があります。まず、システムが最新のパッチに更新されていることを確認してから、システムアーキテクチャに一致するVSコードインストールパッケージをダウンロードして、プロンプトとしてインストールします。インストール後、一部の拡張機能はWindows 8と互換性があり、代替拡張機能を探すか、仮想マシンで新しいWindowsシステムを使用する必要があることに注意してください。必要な拡張機能をインストールして、適切に動作するかどうかを確認します。 Windows 8ではVSコードは実行可能ですが、開発エクスペリエンスとセキュリティを向上させるために、新しいWindowsシステムにアップグレードすることをお勧めします。

VSコード拡張機能は、悪意のあるコードの隠れ、脆弱性の活用、合法的な拡張機能としての自慰行為など、悪意のあるリスクを引き起こします。悪意のある拡張機能を識別する方法には、パブリッシャーのチェック、コメントの読み取り、コードのチェック、およびインストールに注意してください。セキュリティ対策には、セキュリティ認識、良好な習慣、定期的な更新、ウイルス対策ソフトウェアも含まれます。

Pythonは、スムーズな学習曲線と簡潔な構文を備えた初心者により適しています。 JavaScriptは、急な学習曲線と柔軟な構文を備えたフロントエンド開発に適しています。 1。Python構文は直感的で、データサイエンスやバックエンド開発に適しています。 2。JavaScriptは柔軟で、フロントエンドおよびサーバー側のプログラミングで広く使用されています。

PHPは1994年に発信され、Rasmuslerdorfによって開発されました。もともとはウェブサイトの訪問者を追跡するために使用され、サーバー側のスクリプト言語に徐々に進化し、Web開発で広く使用されていました。 Pythonは、1980年代後半にGuidovan Rossumによって開発され、1991年に最初にリリースされました。コードの読みやすさとシンプルさを強調し、科学的コンピューティング、データ分析、その他の分野に適しています。

VSコードでは、次の手順を通じて端末でプログラムを実行できます。コードを準備し、統合端子を開き、コードディレクトリが端末作業ディレクトリと一致していることを確認します。プログラミング言語(pythonのpython your_file_name.pyなど)に従って実行コマンドを選択して、それが正常に実行されるかどうかを確認し、エラーを解決します。デバッガーを使用して、デバッグ効率を向上させます。
