1.何numpyの?
科学技術計算のためのnumpyの基本データ、タスクを完了するために科学技術計算だけではなく、キューブコンテナとして効率的に使用することができます。大きな行列を格納し、処理します。
Pythonはモジュールアレイ、及び異なったリストを提供し、直接値を保存するが、原因Pythonモジュールに多次元配列、また、コンピューティング、様々な機能をサポートしていません。
numpyのは、この後悔を補います。numpyのは、多次元配列に格納されたデータの単一のタイプが提供される--ndarray
2.ndarryプロパティ
プロパティ | 説明 |
DECISION | int型を返します。これは、配列の次元を表し、 |
形状 | タプルを返します。これは、(M、N)の形状、n行m列の行列に対して、アレイの大きさを示します |
サイズ | int型を返します。配列の要素の総数を表し、アレイは製品の形状に等しいです。 |
DTYPE | データ型を返します。型の配列要素に記載されています。 |
itemsize | int型を返します。これは、(バイト)配列の各要素の大きさを表します |
3.アレイ(一次元または多次元配列を作成する)を作成
numpy.array(オブジェクト、DTYPE =なし、コピー= Trueの場合、順番= 'K'、subok = Flase、ndmin = 0)
パラメーター名 | 説明 |
オブジェクト | 配列を受け取ります。作成したい配列。デフォルトなし。 |
DTYPE | データ型を受け取ります。データが配列型を表すのに必要な。与えられていない場合には、オブジェクト型を保存するために必要な最小を選択します。デフォルトはNoneです。 |
ndmin | INTを受けました。配列の最小寸法が生成されている必要があります指定します。デフォルトはNoneです。 |
4.配列プロパティの配列を作成して表示
import numpy as np ##导入numpy库
arr1 = np.array([1,2,3,4]) ##创建一维数组
print("创建的数组为:",arr1)
输出结果:
创建的数组为:[1 2 3 4]
arr2 = np.array([[1,2,3,4],[4,5,6,7],[7,8,9,10]]) ##创建二维数组
print("数组维度为:"arr2.ndim) ##查看数组维度
print("数组形状为:",arr2.shape) ##查看数组结构
print("数组类型为:",arr2.dtype) ##查看数组类型
print("数组大小为:",arr2.size) ##查看数组大小
print("数组每个元素大小为:",arr2.itemsize) ##查看数组每个元素大小
输出结果:
数组维度为:2
数组形状为:(3,4)
数组类型为: int32
数组大小为:12
数组每个元素大小为:4
5.アレイ状属性をリセット
arr2.shape = 4,3 ###重新设置arr2数组的shape
print("重置shape后的arr2为:\n",arr2)
输出结果:
[[ 1 2 3]
[ 4 4 5]
[ 6 7 7]
[ 8 9 10]]
6.(開始値を設定することにより、一次元アレイを作成するための最終値、ステップサイズ)arange機能を持つ配列を作成します
import numpy as np
## 参数1:开始 包含
## 参数2 截止 不包含
## 参数3 步长
arr1 = np.arange(1,10,2)
print("使用arange函数创建的数组为:\n",arr1)
输出结果:
使用arange函数创建的数组为:
[1 3 5 7 9]
アレイを作成するために使用される7関数linspace(設定された開始値、最終値、要素の数)
import numpy as np
# ## 参数1 开始 ,包含
# ## 参数2 截止 ,包含
# ## 参数3 元素个数
arr1 = np.linspace(0,1,6)
print("使用linspace创建的数组为:\n",arr1)
输出结果为:
使用linspace创建的数组为:
[0. 0.2 0.4 0.6 0.8 1. ]
8.使用して幾何学的配列のログ・スペース関数を作成(生成(10 ^ 2~10 ^ 0)20の幾何学シリーズ)
import numpy as np
###参数1 以10的开始次方 开始,包含
###参数2 以10的结束次方 结束,包含
###参数3 生成数组个数
arr1 = np.logspace(0,2,20)
print("使用logspace函数创建的数组为:\n",arr1)
输出结果:
使用logspace函数创建的数组为:
[ 1. 1.27427499 1.62377674 2.06913808 2.6366509
3.35981829 4.2813324 5.45559478 6.95192796 8.8586679
11.28837892 14.38449888 18.32980711 23.35721469 29.76351442
37.92690191 48.32930239 61.58482111 78.47599704 100. ]
9.ゼロ機能を使用してアレイを作成します。
impory numpy as np
##参数 生成数组的shape
arr1 = np.zeros((2,3))
print("使用zeros函数创建的数组为:\n",arr1)
输出结果:
使用zeros函数创建的数组为:
[[0. 0. 0.]
[0. 0. 0.]]
10.目の機能を使用してアレイを作成します
import numpy as np
###参数 生成对角都为1的数,里面参数是一个数,表示生成数组为几行几列
arr1 = np.eye(3)
print("使用eye函数创建的数组为:\n",arr1)
输出结果:
使用eye函数创建的数组为:
[[1. 0. 0.]
[0. 1. 0.]
[0. 0. 1.]]
11 DIAG機能を使用してアレイを作成します
import numpy as np
## 生成指定对角元素的对角数组,传入参数多大就生成几行几列
arr1 = np.diag([1,2,3,4])
print("使用diag创建的数组为:\n",arr1)
输出结果:
使用diag创建的数组为:
[[1 0 0 0]
[0 2 0 0]
[0 0 3 0]
[0 0 0 4]]
12.もの関数を使用してアレイを作成:1の要素を作成します
import numpy as np
##参数 生成数组的shape 全部元素都为1
arr1 = np.ones((3,5))
print("使用ones函数创建的数组为:\n",arr1)
输出结果:
使用ones函数创建的数组为:
[[1. 1. 1. 1. 1.]
[1. 1. 1. 1. 1.]
[1. 1. 1. 1. 1.]]
13.ランダム関数は、乱数を生成します
import numpy as np
###生成指定参数个0~1 之间的数组 包含0 不包含1
arr1 = np.random.random(4)
print("arr1:\n",arr1)
输出结果:
arr1:
[0.09890543 0.5631192 0.09417896 0.1554208 ]
##################################################################
###生成均匀分布的数组,里面参数为几行几列
arr2 = np.random.rand(6,2)
print("arr2:\n",arr2)
输出结果:
arr2:
[[0.60073526 0.40737395]
[0.49359336 0.48587344]
[0.58353272 0.7918001 ]
[0.06910529 0.6781642 ]
[0.47421911 0.51124696]
[0.75780799 0.56415203]]
#################################################
####符合正太分布的数组
## u 均值 反映的正太分布对称线的位置
## a 标准差 反映数据的离散程度
## a 越大,越离散,图形越平缓
## a 越小,越密集,图形越陡峭
arr3 = np.random.randn((10,2))
print("arr3:\n",arr3)
输出结果:
arr3:
[[ 0.47601861 -0.53283289]
[ 0.36274619 -0.27527158]
[-0.00463033 -0.55391689]
[-1.6325087 -1.56417882]
[-1.25892241 -0.32421935]
[ 1.09829841 0.23137011]
[-0.35076178 0.82404005]
[ 0.87361673 1.64870962]
[ 0.21036936 1.09305065]
[ 1.92894355 -1.80894203]]
#################################################
arr4 = np.random.randint(2,10,size=[3,4])
## random.randint(a, b),用于生成一个指定范围内的整数。
## 其中参数 a 是下限,参数 b 是上限,生成的随机数 n: a <= n <= b
print("arr4:\n",arr4)
输出结果:
arr4:
[[7 3 2 9]
[4 8 4 2]
[4 7 3 6]]
14.配列データ型の変換
print(np.float64(42)) ## 整型转换为浮点型
print(np.int8(42.0)) ## 浮点型转换为整型
print(np.bool(42)) ## 整型转换为布尔型
print(np.bool(0))
print(np.float(True)) ## 布尔型转换为浮点型
print(np.int(False)) ## 布尔型转换为整型
输出结果:
42.0
42
True
False
1.0
0
15.カスタムデータ型
import numpy as np
df = np.dtype([("name",np.str_,32),("weight",np.float64),("height",np.float64)])
arr1 = np.array([("zs",180,75),("ls",170,60),("ww",185,80)],dtype=df)
print(arr1)
print(arr1.dtype)
输出结果:
[('zs', 180., 75.) ('ls', 170., 60.) ('ww', 185., 80.)]
[('name', '<U32'), ('weight', '<f8'), ('height', '<f8')]
16.配列インデックス
### 一维数组的索引
##创建一个一维数组
arr = np.arange(10)
print("arr:",arr)
### 一维索引
##取5
print(arr[5])
##取5,6,7
print(arr[5:8])
##多维数组的索引
arr = np.array([[1,2,3,4],[2,3,4,5],[3,4,5,6],[4,5,6,7]])
print(arr)
print("取前两行所有列",arr[:2,:])
print("取第三行的4,5",arr[2,1:3])
print("取第一行,第三行的的第一列和最后一列",arr[::2,::3])
17.アレイの形状を変化させます
arr1 = np.arange(10) ## 创建一维数组
print(arr1)
输出结果:
[0 1 2 3 4 5 6 7 8 9]
#############################################
##改变数组形状
arr_new = arr1.reshape(2,5)
print(arr_new)
输出结果:
[[0 1 2 3 4]
[5 6 7 8 9]]
18.使用ラヴェル関数fとlatten機能平坦アレイ
arr1 = np.arange(9).reshape(3,3)
print(arr1)
输出结果:
[[0 1 2]
[3 4 5]
[6 7 8]]
arr_new = arr1.reval()
print("展平的数组结果为:\n"arr_new)
输出结果:
展平的数组结果为:
[0 1 2 3 4 5 6 7 8]
########################################################
### 通过flatten展平数组
### 默认参数为C,按行展开,F为按列展开
arr_new = arr.flatten("F")
print(arr_new)
输出结果:
[0 1 2 3 4 5 6 7 8]
19.組成アレイ
import numpy as np
arr1 = np.arange(6).reshape(2,3)
arr2 = np.array([[1,2,3],[4,5,6]])
print('arr1:\n',arr1)
print('arr2:\n',arr2)
输出结果:
arr1:
[[0 1 2]
[3 4 5]]
arr2:
[[1 2 3]
[4 5 6]]
#######################################
### hstack 数组横向拼接,增加列
arr_new = np.hstack((arr1,arr2))
print('arr_new:\n',arr_new)
输出结果:
arr_new:
[[0 1 2 1 2 3]
[3 4 5 4 5 6]]
##########################################
###vstack 数组纵向拼接,增加行
arr_new = np.vstack((arr1,arr2))
print("arr_new:\n",arr_new)
输出结果:
arr_new:
[[0 1 2]
[3 4 5]
[1 2 3]
[4 5 6]]
############################################
####concatenate axis=1 数组横向组合
arr_new = np.concatenate((arr1,arr2),axis=1)
print(arr_new)
输出结果:
[[0 1 2 1 2 3]
[3 4 5 4 5 6]]
###############################################
### concatenate ,axis=0 数组纵向组合
# arr_new = np.concatenate((arr1,arr2),axis=0)
# print(arr_new)
输出结果:
[[0 1 2]
[3 4 5]
[1 2 3]
[4 5 6]]
### 拼接过程中:维度
## 横向拼接,行一致一致
## 纵向拼接,列一致
20カッティングアレイ
import numpy as np
arr = np.arange(16).reshape(4,4)
print("arr:\n",arr)
输出结果:
arr:
[[ 0 1 2 3]
[ 4 5 6 7]
[ 8 9 10 11]
[12 13 14 15]]
#### hsplit 横向拆分
arr_new = np.hsplit(arr,2)
##或者
arr_new = np.split(arr,2,axis=1)
print(arr_new)
输出结果:
[array([[ 0, 1],
[ 4, 5],
[ 8, 9],
[12, 13]]), array([[ 2, 3],
[ 6, 7],
[10, 11],
[14, 15]])]
#### vsplit 纵向拆分
arr_new = np.hsplit(arr,2)
### 或者
arr_new = np.split(arr,2,axis=0)
print(arr_new)
输出结果:
[array([[0, 1, 2, 3],
[4, 5, 6, 7]]), array([[ 8, 9, 10, 11],
[12, 13, 14, 15]])]