1.はじめに
numpyの(数値のPython)は、オープンソースのPython科学計算の拡張機能は、主に直接、簡単、効率的かつよりなければならない基本的なデータ構造を使用するよりも、一般的に同じタスクについて計算任意の寸法のマトリックスアレイ、Pythonのnumpyのを処理するために使用されます。インストールのpip install numpy
コマンド。
2.
2.1 ndarray
すなわち、N次元アレイ型ndarrayは、セット内の開始要素インデックスに0を標識し、同じデータ型のコレクションです。
numpyの配列方法は、次の形式の配列を作成するために使用することができます:
配列(p_object、DTYPE =なし、コピー= Trueの場合、順番= 'K'、テスト= Falseの、ndmin = 0)
-
p_object:ネストされた配列または列の数
-
DTYPE:配列要素のデータ型
-
コピー:コピーしたい場合は
-
順序:スタイル・アレイを作成し、Cが行方向であり、Fは、列方向で、Aは、任意の方向(デフォルト)
-
subok:基本クラスの配列と一致し、デフォルトのリターン
-
ndmin:アレイの最小寸法を生成します
もちろん、この方法はまた、例は、特定の使用を見て、次の使用arangeかもしれません。
配列を作成します
1次元配列を作成する方法を見てください
import numpy as np
arr1 = np.array([1, 2, 3, 4, 5])
arr2 = np.array(range(1, 6))
arr3 = np.arange(1, 6)
print (arr1)
print (arr2)
print (arr3)
例えば、多次元配列、2次元配列を作成する方法を見てください
import numpy as np
arr = np.array([[1, 2], [3, 4], [5, 6]])
print(arr)
共通のプロパティ
オブジェクトの共通プロパティの例を見てのところでndarray
import numpy as np
arr = np.array([1, 2, 3])
# 元素类型
print(arr.dtype)
# 形状
print(arr.shape)
# 元素个数
print(arr.size)
# 维度
print(arr.ndim)
# 每个元素大小(字节)
print(arr.itemsize)
配列の形状を変更します
import numpy as np
arr = np.arange(30)
print(arr)
# 变成二维数组
arr.shape = (5, 6)
print(arr)
# 变成三维数组
arr = arr.reshape((2, 3, 5))
print(arr)
2.2データ型
一般的なデータ型の以下のテーブルルックnumpyのことで。
タイプ | 説明 |
---|---|
INT_ | (長いC言語、INT32またはInt64型に似て)デフォルトの整数型 |
INTC | 同じタイプCとINTは、INTは、一般的に64またはINT32であります |
INTP | インデックスの整数型のための(一般INT32またはInt64のままssize_tの、C様) |
INT8 | バイト(127 -128) |
INT16 | 整数(-32768〜32767) |
INT32 | 整数(-2147483648 2147483647まで) |
int64モード | 整数(9223372036854775807に-9223372036854775808) |
UINT8 | 符号なし整数(0〜255) |
uint16の | 符号なし整数(0〜65535) |
UINT32 | 符号なし整数(0 4294967295)に |
UINT64 | 符号なし整数(0 18446744073709551615まで) |
bool_ | Booleanデータ型(TrueまたはFalse) |
浮く_ | 速記の種類のfloat64 |
float16 | 半精度浮動小数点数であって、符号ビット、5ビットの指数部、10仮数ビット |
float32 | 含む単精度浮動小数点数、:符号ビットは、8つの指数部、23仮数ビット |
float64 | 含む倍精度浮動小数点、:符号ビット、11個の指数ビットを、52ビットの仮数 |
繁雑_ | complex128速記タイプ、即ち、128ビットの複数 |
complex64 | 複雑な、32ビット浮動小数点数は、ビス(実数部と虚数部)を表します |
complex128 | 複雑な、64ビットの浮動小数点数は、ビス(実数部と虚数部)を表します |
方法の例では、ビューのデータ型を変更します。
import numpy as np
arr1 = np.array([1, 2, 3])
arr2 = np.array([1.111, 2.222, 3.333])
# 当前数据类型
print(arr1.dtype)
# 修改数据类型
arr1 = arr1.astype(np.int64)
print(arr1.dtype)
# 保留一位小数
arr2 = np.round(arr2, 1)
print(arr2)
2.3インデックスとスライスしました
numpyのアレイサポートのインデックスは、操作をスライス、また、1次元配列を見て、反復することができます。
import numpy as np
arr = np.array([1, 2, 3, 4, 5, 6])
print(arr[3])
# 修改元素值
arr[3] = 10
print(arr[3])
print(arr[2:])
print(arr[2:4])
print(arr[4:])
for i in arr:
print(i)
これらの操作多次元配列を見てください。
import numpy as np
arr = np.arange(12).reshape(3, 4)
print(arr)
# 取某一个值
print(arr[2, 3])
# 取多个不连续的值
print(arr[[0, 2],[1, 3]])
# 取一行
print(arr[0])
# 连续取多行
print(arr[1:])
# 取不连续的多行
print(arr[[0, 2]])
# 取一列
print(arr[:, 0])
# 连续取多列
print(arr[:, 2:])
# 取不连续的多列
print(arr[:, [0, 2]])
ビューの2.4コピー
ビュー(浅いコピー)はちょうど元のデータへの参照は、この参照によってアクセスすることができている私たちはビューを変更する場合は浅いコピーがメモリを共有しているため、元のデータの操作は、それは、元のデータに影響を与えます。
コピー(ディープコピー)我々はコピーに変更を加えた場合、深いコピーがメモリを共有していないので、それは、元のデータには影響しません、データの完全なコピーです。
コールndarrayビュー()メソッドは、例えばルックにより、以下のビューを生成します。
import numpy as np
a = np.arange(6).reshape(2,3)
# 创建视图
b = a.view()
print('a的id:', id(a))
print('b的id:', id(b))
# 修改 b 的形状
b.shape = 3,2
print('a的形状:')
print(a)
print('b的形状:')
print(b)
print(a is b)
コピーndarrayを呼び出し()メソッドはを見て、一例として、以下のコピーを生成します。
import numpy as np
a = np.arange(1, 6)
# 创建副本
b = a.copy()
print(a is b)
b[1] = 10
print(a[1])
print(b[1])
2.5コンセプトシャフト
numpyのは、軸方向に単純なデジタル0,1,2の使用のみ0、0、1つの軸の二次元アレイの一次元アレイ軸前記意図され、三次元アレイは、軸0,1,2シャフト理解しています概念を対応する私たちは、適切な計算を行うことができます。
2.6基本操作
アレイとデジタル間の動作
プラスアレイと数、減算、乗算、除算および乗算の間ルック。
import numpy as np
arr = np.arange(12).reshape(3, 4)
print(arr + 3)
print(arr - 1)
print(arr * 2)
print(arr / 3)
アレイおよびアレイ間の動作
アレイおよびアレイ間の動作を見てください。
import numpy as np
# 相同行数,相同列数
a = np.arange(12).reshape(3, 4)
b = np.arange(20, 32).reshape(3, 4)
print(a + b)
print(b * a)
# 相同行数
c = np.arange(12).reshape(3, 4)
d = np.arange(3).reshape(3, 1)
print(c + d)
print(c - d)
# 相同列数
e = np.arange(12).reshape(4, 3)
f = np.arange(3).reshape(1, 3)
print(e * f)
print(e - f)
一般的な数学
import numpy as np
arr = np.array([[33, 55], [11, 66], [22, 99]])
print(arr)
# 最大值
print(np.max(arr))
# 最小值
print(np.min(arr))
# 某一轴上的最大值
print(np.max(arr, 1))
# 某一轴上的最小值
print(np.min(arr, 1))
# 平均值
print(np.mean(arr))
# 某一行、一列的平均值
print(np.mean(arr, axis=1))
# 最大值索引
print(np.argmax(arr))
print(np.argmax(arr, axis=1))
# 最小值索引
print(np.argmin(arr))
print(np.argmin(arr, axis=1))
# 极差
print(np.ptp(arr))
print(np.ptp(arr, axis=1))
# 方差
print(np.var(arr))
# 标准差
print(np.std(arr))
# 中位数
print(np.median(arr))
2.7共通操作
追加操作
numpyのは、追記()メソッドは、アレイ全体に割り当てられた操作を配列の最後の値を追加し、新しいアレイ、以下の例示的な外観を使用して、入力整合寸法の動作を保証する必要の元の配列をコピーすることができます。
import numpy as np
arr = np.array([[1, 3, 5], [2, 4, 6]])
# 添加元素
print(np.append(arr, [1, 1, 3]))
# 沿 0 轴添加元素
print(np.append(arr, [[1, 1, 3]], axis=0))
# 沿 1 轴添加元素
print(np.append(arr, [[1, 1, 3], [2, 1, 5]], axis=1))
我々はまた、以下の例示的な外観を使用して、指定された指定されたインデックスの最前線軸配列値に挿入される挿入部()メソッドの追加操作を、使用することができます。
import numpy as np
arr = np.array([[1, 3, 5], [2, 4, 6]])
# 添加元素
print(np.insert(arr, 1, [1, 1, 3]))
# 沿 0 轴添加元素
print(np.insert(arr, 1, [1, 1, 3], axis=0))
# 沿 1 轴添加元素
print(np.insert(arr, 1, [1, 5], axis=1))
削除
numpyの削除()アレイを削除することができ、一例で下記を見てください。
import numpy as np
arr = np.array([[1, 3, 5], [2, 4, 6]])
# 删除元素
print(np.delete(arr, 1))
# 沿 0 轴删除元素
print(np.delete(arr, 1, axis=0))
# 沿 1 轴删除元素
print(np.delete(arr, 1, axis=1))
重複排除操作
numpyのユニーク()メソッドは、配列内の反復因子を除去することができます。
import numpy as np
arr = np.array([1, 3, 5, 2, 4, 6, 1, 5, 3])
# 去除重复元素
print(np.unique(arr))
# 去重数组的索引数组
u, indices = np.unique(arr, return_index=True)
print(indices)
# 去重元素的重复数量
u, indices = np.unique(arr, return_counts=True)
print(indices)