目次
注: (2, 3, 3) For を変更した場合(3, 3)
arange([start,] stop[, step,], dtype=None, , like=None)
1.4Numpy基础计算演示" >1.4Numpy基础计算演示
二、线性代数相关 " >二、线性代数相关 
三、矩阵的高级函数-随机数矩阵" >三、矩阵的高级函数-随机数矩阵
ホームページ バックエンド開発 Python チュートリアル Python の numpy モジュールの詳細な紹介

Python の numpy モジュールの詳細な紹介

May 19, 2022 am 11:43 AM
python

この記事では、python に関する関連知識を紹介します。主に numpy モジュールに関する関連問題を紹介します。Numpy とは Numerical Python extensions の略で、文字通り Python の数値計算拡張機能を意味します。合わせて、皆さんのお役に立てれば幸いです。

Python の numpy モジュールの詳細な紹介

推奨学習: python ビデオ チュートリアル

## Numerical Python extensions の略で、文字通り Python の数値計算拡張機能を意味します。 Numpy は、Python の多くの機械学習ライブラリの依存関係であり、Numpy を通じて基本的な行列計算を実装します。 Numpy

は、高次の大規模な行列計算とベクトル計算をサポートしており、比較的豊富な関数セットも提供します。さらに、Numpy は、より現代的なプログラミング言語である Python をベースにしています。Python は、オープンソース、無料、柔軟性、学習しやすさ、優れたエンジニアリング機能により、テクノロジー界で人気があります。これは、世界の主流のプログラミングとなっています。機械学習、データ分析などの言語。 1. 配列型

numpy の配列型はライブラリの基本的なデータ型です。 type 文字通り配列を意味し、その最も重要な属性が要素と次元であることを意味します。このデータ型を使用して多次元配列を実装できます。 したがって、このデータ型を通じて、1 次元配列を使用してベクトルを表現したり、2 次元配列を使用して行列を表現したりすることで、高次元のテンソルを表現することができます。

1.1配列型の基本的な使用法

import numpy as np
# 通过np.array()方法创建一个名为array的array类型,参数是一个list
array = np.array([1, 2, 3, 4])
print(array)
# 结果为:[1 2 3 4]

# 获取array中元素的最大值
print(array.max())
# 结果为:4

# 获取array中元素的最小值
print(array.min())
# 结果为:1

# 获取array中元素的平均值
print(array.mean())
# 结果为:2.5

# 直接将array乘以2,python将每个元素都乘以2
print(array*2)
# 结果为:[2 4 6 8]

print(array+1)
# 结果为:[2 3 4 5]

print(array/2)
# 结果为:[0.5 1.  1.5 2. ]

# 将每一个元素都除以2,得到浮点数表示的结果
print(array % 2)
# 结果为:[1 0 1 0]

array_1 = np.array([1, 0, 2, 0])
# 获取该组数据中元素值最大的那个数据的首个索引,下标从0开始
print(array_1.argmax())
# 结果为:2
上記のコードを通じて、Numpy での配列型の基本的な使用法を理解できます。方法。 array は実際には、リスト パラメーターを渡すことによってオブジェクトにインスタンス化され、それによってデータがカプセル化されるクラスであることがわかります。

1.2 高次元データの処理


import numpy as np
# 创建一个二维数组,用以表示一个3行2列的矩阵
array = np.array([[1, 2], [3, 4], [5, 6]])
print(array)

# 查看数据的维度属性,下面输出结果(3,2)表示3行2列
print(array.shape)
# 结果为:(3, 2)

# 查看元素个数
print(array.size)
# 结果为:6

# 查看元素最大值的索引
print(array.argmax())
# 结果为:5

# 将shape为(3,2)的array转换为一行表示
print(array.flatten())
# 结果为:[1 2 3 4 5 6]
# 我们可以看到,flatten()方法是将多维数据“压平”为一维数组的过程

#将array数据从shape为(3,2)的形式转为(2,3)的形式
print(array.reshape(2, 3))
'''结果为:
[[1 2 3]
 [4 5 6]]'''

#将array数据从shape为(3,2)的形式转为(1,6)的形式
print(array.reshape(1, 6))
# 结果为:[[1 2 3 4 5 6]]
より高度なものは flatten() と reshape です() 関数の場合、reshape() によって返される結果は配列型であることに注意してください。

#1.3Numpy は特別な型の配列型を作成します


1.3.1 すべて 0 またはすべて 1 の配列を生成します
import numpy as np
# 生成所有元素为
array_zeros = np.zeros((2, 3, 3))
print(array_zeros)
'''结果为:
[[[0. 0. 0.]
  [0. 0. 0.]
  [0. 0. 0.]]

 [[0. 0. 0.]
  [0. 0. 0.]
  [0. 0. 0.]]]
'''
array_ones = np.ones((2, 3, 3))
print(array_ones)
'''结果为:
[[[1. 1. 1.]
  [1. 1. 1.]
  [1. 1. 1.]]

 [[1. 1. 1.]
  [1. 1. 1.]
  [1. 1. 1.]]]
'''
print(array_ones.shape)
# 结果为:(2, 3, 3)

注: (2, 3, 3) For を変更した場合(3, 3)

array_zeros = np.zeros((3, 3))
print(array_zeros)
'''结果为:
[[0. 0. 0.]
 [0. 0. 0.]
 [0. 0. 0.]]
'''

3 行 3 列の配列を生成します

#1.3.2np .arrange () および np.linspace()


arange([start,] stop[, step,], dtype=None, , like=None)

指定された間隔内で均一に分布した値を返します。

値は、半開区間 ``[start, stop]`` (つまり、`start` を含み、`stop` を除く区間) 内で生成されます。 整数引数の場合、この関数は Python の組み込み関数 `range` 関数と同等ですが、リストの代わりに ndarray を返します。 整数以外のステップ サイズ (0.1 など) を使用すると、結果が一貫性を持たなくなることがよくあります。このような場合には、 `numpy.linspace` を使用することをお勧めします。 linspace(start、stop、num=50、endpoint=True、retstep=False、dtype=None、axis=0)

指定された時間間隔内で均等に分布した数値を返します。

間隔 [`start`, `stop`] で計算された、均一に分布した "num" 個のサンプルを返します。 start: シーケンスの開始値。

stop: 「endpoint」が False に設定されていない場合、シーケンスの終了値。この場合、シーケンスは最後の「num 1」を除くすべての均一に分散されたサンプルで構成され、したがって「stop」は除外されます。 「endpoint」が False の場合、ステップ サイズが変更されることに注意してください。

num=50: 生成されるサンプルの数。デフォルト値は 50 です。負ではない必要があります。

endpoint=True: true の場合、`stop` が最後のサンプルです。それ以外の場合は含まれません。デフォルトは true です。

retstep=False:如果为 True,则返回 (`samples`, `step`),其中 `step` 是样本之间的间距。

dtype=None:输出数组的类型。如果 `dtype` 没有给出,数据类型是从 `start` 和 `stop` 推断出来的。推断的 dtype 永远不会是整数;即使参数会产生一个整数数组,也会选择`float`。

因此以下代码就很容易理解了

# 生成一个array,从0递增到10,步长为1
array_arange = np.arange(10)
print(array_arange)
# 结果为:[0 1 2 3 4 5 6 7 8 9]

# 生成一个array,从0递增到10,步长为2
array_arange_1 = np.arange(0, 10, 2)
print(array_arange_1)
# 结果为:[0 2 4 6 8]

# 生成一个array,将0-10等分为5部分
array_linspace = np.linspace(0, 10, 5)
print(array_linspace)
# 结果为:[ 0.   2.5  5.   7.5 10. ]

1.4Numpy基础计算演示

import numpy as np
# 取绝对值
print(np.abs([1, -2, 3, -4]))
# [1 2 3 4]

# 求正弦值
print(np.sin(np.pi/2))
# 1.0

# 求反正切值
print(np.arctan(1))
# 0.7853981633974483

# 求e的2次方
print(np.exp(2))
# 7.38905609893065

# 求2的三次方
print(np.power(2, 3))
# 8

# 求向量[1,2]与[3,4]的点积
print(np.dot([1, 2], [3, 4]))
# 11

# 求开方
print(np.sqrt(4))
# 2.0

# 求和
print(np.sum([1, 2, 3, 4]))
# 10

# 求平均值
print(np.mean([1, 2, 3, 4]))
#2.5 

# 求标准差
print(np.std([1, 2, 3, 4]))
# 1.118033988749895

二、线性代数相关 

        前面我们已经了解到array类型及其基本操作方法,了解array类型可以表示向量、矩阵和多维张量。

        线性代数计算在科学计算领域中非常重要,因此接下来了解以下Numpy提供的线性代数操作

import numpy as np

vector_a = np.array([1, 2, 3])
vector_b = np.array([2, 3, 4])
# 定义两入向量vector_a与vector_b

m = np.dot(vector_a, vector_b)
# 将两个向量相乘,在这里也就是点乘,结果为20
print(m)

n = vector_a.dot(vector_b)
print(n)
# 将vector_a与vector_b相乘,结果为20
o = np.dot(vector_a, vector_b.T)
print(o)

'''
将一个行向量与一个列向量叉乘的结果相当于将两个行向量求点积,这里测试了dot()方法。其中array类型的T()方法表示转置。
测试结果表明:
dot()方法默认对两个向量求点积。对于符合叉乘格式的矩阵,自动进行又乘。'''

# 我们看一下下面这个例子:

matrix_a = np.array([[1, 2], [3, 4]])
# 定义一个2行2列的方阵

matrix_b = np.dot (matrix_a, matrix_a.T)
# 这里将该方阵与其转置叉乘,将结果赋予matrix_b变量
print(matrix_b)
'''结果为:
array([[5,11],
[11,25]])'''

p = np.linalg.norm([1, 2])
print(p)
# 求一个向量的范数的值,结果为2.2360679774997898
# 如果norm()方法没有指定第2个参数,则默认为求2范数

np.linalg.norm([1, -2], 1)
# 指定第2个参数值为1,即求1范数。我们在前面介绍过,1范数的结果为向量中各元素绝对值之和,结果为3.0

q = np.linalg.norm([1, 2, 3, 4], np. inf)
print(q)
# 求向量的无穷范数,其中np.inf表示正无穷,也就是向量中元素值最大的那个,其结果为4.0

r = np.linalg .norm([1, 2, 3, 4], -np.inf)
print(r)
# 同理,求负无穷范数的结果为1, 也就是向量中元素的最小值

# 求行列式
s = np.linalg.det(matrix_a)
print(s)
# -2.0000000000000004

t = np.trace(matrix_a)
print(t)
# 求矩阵matrix_a的迹,结果为5

u = np.linalg.matrix_rank(matrix_a)
# 求矩阵的秩,结果为2
print(u)

v = vector_a * vector_b
# 使用*符号将两个向量相乘,是将两个向量中的元素分别相乘,也就是我们所讲到的哈达马乘积
print(v)
# [ 2  6 12]

w = vector_a ** vector_b
print(w)
# 使用二元运算符**对两个向量进行操作,结果为array([1, 8, 81],dtype = int32)
# 表示将向量vector. a中元素对应vector. b中的元素值求幂运算。例如最终结果[1,8,81]可以表示为[1*1,2*2*2,3*3*3*3]

# 求逆矩阵
z = np.linalg.inv(matrix_a)
print(z)
'''
[[-2.   1. ]
 [ 1.5 -0.5]]'''

三、矩阵的高级函数-随机数矩阵

        Numpy除了为我们提供常规的数学计算函数和矩阵相关操作之外,还提供很多功能丰富的模块,随机数模块就是其中一部分。

        利用随机数模块可以生成随机数矩阵,比python自带的随机数模块功能还要强大。

import numpy as np
# 设置随机数种子
np.random.seed()

# 从[1,3)中生成一个整型的随机数,连续生成10个
a = np.random.randint(1, 3, 10)
print(a)
# [1 1 1 2 1 1 1 1 2 2]

# 若要连续产生[1,3}之间的浮点数,可以使用以下方法:
# ①
b = 2*np.random.random(10)+1
print(b)
'''
[2.88458839 2.07004167 2.80814156 1.83247535 2.33649809 2.62763357
 2.0549351  2.33464915 1.70562208 2.66257726]'''
# ②
c = np.random.uniform(1, 3, 10)
print(c)
'''
[1.76967412 1.37703868 2.48838004 1.45986254 2.04487418 2.51107658
 1.25673115 1.31416097 2.56218317 2.90575438]'''

# 生成一个满足正态分布(高斯分布)的矩阵,其维度是4*4
d = np. random.normal(size=(4, 4))
print(d)
'''
[[ 0.76164366  0.11588368  0.49221559 -0.28222691]
 [ 0.47638143 -0.21197541 -1.0776362   0.49241666]
 [ 0.26038756 -0.20406522  1.11210954 -1.191425  ]
 [ 0.58255677  1.84047863 -0.21366512 -0.85425828]]'''

# 随机产生10个n=5、p=0.5的二项分布数据:
e = np.random.binomial(n=5, p=0.5, size=10)
print(e)
# [1 1 5 2 1 2 1 2 1 2]

# 产生一个0到9的序列
data = np.arange(10)
print(data)
# [0 1 2 3 4 5 6 7 8 9]

# 从data数据中随机采集5个样本,采集过程是有放回的
f = np.random.choice(data, 5)
print(f)
# [1 7 3 3 4]

# 从data数据中随机采集5个样本,采集过程是没有放回的
g = np.random.choice(data, 5, replace=False)
print(g)
# [8 9 1 5 0]

# 对data进行乱序
h = np.random.permutation(data)
print(h)
# [8 5 3 9 2 0 4 6 1 7]

# 对data进行乱序,并替换为新的data
np.random.shuffle(data)
print(data)
# [9 7 0 3 8 5 2 1 4 6]

推荐学习:python视频教程

以上がPython の numpy モジュールの詳細な紹介の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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

ホットAIツール

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Undresser.AI Undress

Undresser.AI Undress

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

AI Clothes Remover

AI Clothes Remover

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

Clothoff.io

Clothoff.io

AI衣類リムーバー

Video Face Swap

Video Face Swap

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

ホットツール

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

SublimeText3 中国語版

SublimeText3 中国語版

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

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

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

Python Seabornジョイントプロットの例 Python Seabornジョイントプロットの例 Jul 26, 2025 am 08:11 AM

Seabornのジョイントプロットを使用して、2つの変数間の関係と分布をすばやく視覚化します。 2。基本的な散布図は、sns.jointplot(data = tips、x = "total_bill"、y = "tip"、dind = "scatter")によって実装され、中心は散布図であり、ヒストグラムは上部と右側と右側に表示されます。 3.回帰線と密度情報をdind = "reg"に追加し、marminal_kwsを組み合わせてエッジプロットスタイルを設定します。 4。データ量が大きい場合は、「ヘックス」を使用することをお勧めします。

パイソンリストへの変換の例 パイソンリストへの変換の例 Jul 26, 2025 am 08:00 AM

文字列リストは、 '' .join(words)などのJoIn()メソッドとマージして、「Helloworldfrompython」を取得できます。 2。NUMBERリストは、参加する前にMAP(STR、数字)または[STR(x)forxinNumbers]を備えた文字列に変換する必要があります。 3.任意のタイプリストは、デバッグに適したブラケットと引用符のある文字列に直接変換できます。 4。カスタム形式は、 '|' .join(f "[{item}]" foriteminitems)output "[a] | [などのjoin()と組み合わせたジェネレーター式によって実装できます。

PythonはSQL Server Pyodbcの例に接続します PythonはSQL Server Pyodbcの例に接続します Jul 30, 2025 am 02:53 AM

Pyodbcのインストール:Pipinstallpyodbcコマンドを使用してライブラリをインストールします。 2.接続sqlserver:pyodbc.connect()メソッドを介して、ドライバー、サーバー、データベース、uid/pwdまたはtrusted_connectionを含む接続文字列を使用し、それぞれSQL認証またはWindows認証をサポートします。 3.インストールされているドライバーを確認します:pyodbc.drivers()を実行し、「sqlserver」を含むドライバー名をフィルタリングして、「sqlserverのodbcdriver17」などの正しいドライバー名が使用されるようにします。 4.接続文字列の重要なパラメーター

Python Pandas Meltの例 Python Pandas Meltの例 Jul 27, 2025 am 02:48 AM

pandas.melt()は、幅広い形式データを長い形式に変換するために使用されます。答えは、ID_VARSを識別列を保持し、value_varsを溶かしてvar_nameおよびvalue_nameを選択する列を選択して、新しい列名を定義することです。列は1.id_vars = 'name'を意味します。 4.Value_Name = 'スコア'元の値の新しい列名を設定し、最後に名前、件名、スコアを含む3つの列を生成します。

Python Djangoが例を形成します Python Djangoが例を形成します Jul 27, 2025 am 02:50 AM

まず、名前、メールボックス、メッセージフィールドを含む連絡先フォームを定義します。 2。ビューでは、フォームの送信はPOSTリクエストを審査することにより処理され、検証が渡された後、Cleaned_Dataが取得され、応答が返されます。 3。テンプレートでは、{{form.as_p}}を使用してフィールドをレンダリングし、{%csrf_token%}を追加してCSRF攻撃を防ぎます。 4. contact_viewビューにポイント /連絡先 /にURLルーティングを構成します。 Modelformを使用してモデルを直接関連付けてデータストレージを実現します。 Djangoformsは、データ検証、HTMLレンダリング、エラープロンプトの統合処理を実装します。これは、安全な形式機能の迅速な発展に適しています。

メモリバウンド操作のためのPythonの最適化 メモリバウンド操作のためのPythonの最適化 Jul 28, 2025 am 03:22 AM

Pythoncanbeoptimizedformemory-boundoperationsは、ヘッドゲネレーター、EfficientDataStructures、およびManagingObjectlifetimes.first、Usegeneratoratoratoratoratoratoraturatussを使用していることを確認してください

暗号通貨の統計的裁定とは何ですか?統計的な裁定はどのように機能しますか? 暗号通貨の統計的裁定とは何ですか?統計的な裁定はどのように機能しますか? Jul 30, 2025 pm 09:12 PM

統計アービトラージの紹介統計的arbitrageは、数学モデルに基づいて金融市場で価格の不一致を捉える取引方法です。その核となる哲学は、平均回帰に由来する、つまり、資産価格は短期的には長期的な傾向から逸脱する可能性がありますが、最終的には歴史的平均に戻ります。トレーダーは統計的方法を使用して、資産間の相関を分析し、通常は同期して変更されるポートフォリオを探す。これらの資産の価格関係が異常に逸脱すると、裁定取引の機会が生じます。暗号通貨市場では、主に市場自体の非効率性と劇的な変動のために、統計的な裁定が特に一般的です。従来の金融市場とは異なり、暗号通貨は24時間体制で動作し、その価格はニュース速報、ソーシャルメディアの感情、テクノロジーのアップグレードに非常に敏感です。この一定の価格の変動は、頻繁に価格設定バイアスを作成し、仲裁人を提供します

Python Iterと次の例 Python Iterと次の例 Jul 29, 2025 am 02:20 AM

iter()は、Iteratorオブジェクトを取得するために使用され、次の要素を取得するために次()が使用されます。 1。Iterator()を使用して、リストなどの反復性オブジェクトを反復器に変換します。 2。NEXT()を呼び出して要素を1つずつ取得し、要素が使い果たされたときに停止の例外をトリガーします。 3.次の(iterator、デフォルト)を使用して、例外を回避します。 4。カスタムイテレーターは、反復ロジックを制御するために__iter __()および__next __()メソッドを実装する必要があります。デフォルト値を使用することは、安全なトラバーサルの一般的な方法であり、メカニズム全体が簡潔で実用的です。

See all articles