day26-1 numpyのモジュール

numpyの

# 约定俗成定义为np
import numpy as np

アレイ

  • データの種類、リストのようなビット

一次元配列

  • 一行のみ
  • ラインの数学的同等
lis = [1, 2, 3]
print(np.array(lis))
[1 2 3]

二次元アレイ(最も使用されます)

  • 行は列がありますがあります
  • 数学面を、対応する1次元配列の複数設置されている複数のライン、
arr = np.array([[1, 2, 3], [4, 5, 6]])
print(arr)
[[1 2 3]
 [4 5 6]]

そして、差異のリストnp.array

  1. np.arrayが多次元で、リストは1次元です
  2. 1次元配列のリストには、何かをするが、numpyのは、動作させるための多次元配列であります

行と列の多次元配列を取得します。

arr = np.array([[1, 2, 3, 4], [5, 6, 7, 8]])

print(arr.shape)        # 把行和列返回在一个元祖中
print(arr.shape[0])     # 行
print(arr.shape[1])     # 列
(2, 4)
2
4

インデックス多次元配列

  • 索引付けブラケットは、行と列はコンマによって分離されています
print(arr)
print('-' * 10)
print(arr[1, 2])     # 第二行第三列
print(arr[0, [0, 1, 2, 3]])    # 第一行所有的值
print(arr[0, :])    # 第一行所有的值切片
print(arr[:, 0])    # 第一列所有的值切片
print(arr[:, :])    # 整个多维数组切片
[[1 2 3 4]
 [5 6 7 8]]
----------
7
[1 2 3 4]
[1 2 3 4]
[1 5]
[[1 2 3 4]
 [5 6 7 8]]

先進的な機能

  • 裁判官、フィルタリング機能に参加
# 筛选出值大于50的数
arr = np.array([[12, 123, 20], [145, 56, 24], [51, 1, 2]])
print(arr)
print('-' * 20)
print(arr > 50)
print('-' * 20)
print(arr[arr > 50])
print('-' * 20) 
[[ 12 123  20]
 [145  56  24]
 [ 51   1   2]]
--------------------
[[False  True False]
 [ True  True False]
 [ True False False]]
--------------------
[123 145  56  51]
--------------------

多次元配列要素の交換

arr = np.array([[12, 123, 20], [145, 56, 24], [51, 1, 2]])
print(arr)
print('-' * 20)
arr[1, 2] = 20    # 第二行的第三个元素改为20
print(arr)
print('-' * 20)
arr[1, :] = 20    # 第一行所有元素改为0
print(arr)
print('-' * 20)
arr[arr > 50] = 40  # 大于50的全变为40
print(arr)
print('-' * 20)
[[ 12 123  20]
 [145  56  24]
 [ 51   1   2]]
--------------------
[[ 12 123  20]
 [145  56  20]
 [ 51   1   2]]
--------------------
[[ 12 123  20]
 [ 20  20  20]
 [ 51   1   2]]
--------------------
[[12 40 20]
 [20 20 20]
 [40  1  2]]
--------------------

合わせた多次元配列

arr1 = np.array([[1, 2, 3], [4, 5, 6]])
arr2 = np.array([[7, 8, 9], [10, 11, 12]])
  • vstackとhstackはパラメータのみを入れて、このパラメータは、コンテナでなければなりません
# vstack和hstack
print(np.vstack((arr1, arr2)))  # v:vertical 垂直
print('-' * 20)
print(np.hstack([arr1, arr2]))  # h:horizon 水平
print('-' * 20)
[[ 1  2  3]
 [ 4  5  6]
 [ 7  8  9]
 [10 11 12]]
--------------------
[[ 1  2  3  7  8  9]
 [ 4  5  6 10 11 12]]
--------------------
  • == numpyのは、統一されたプロセスを行うために、限り、軸パラメータとして、軸= 0が表示されて、軸= 1 ==行であります
# concatenate
print(np.concatenate((arr1, arr2)))   # 默认是垂直
print('-' * 20)
print(np.concatenate((arr1, arr2), axis=0))  # 0是列
print('-' * 20)
print(np.concatenate((arr1, arr2), axis=1))  # 1是行
print('-' * 20)
[[ 1  2  3]
 [ 4  5  6]
 [ 7  8  9]
 [10 11 12]]
--------------------
[[ 1  2  3]
 [ 4  5  6]
 [ 7  8  9]
 [10 11 12]]
--------------------
[[ 1  2  3  7  8  9]
 [ 4  5  6 10 11 12]]
--------------------

多次元配列に機能メソッドを作成します

1次元配列を作成します。

  • 範囲
print(np.arange(10))
print(np.arange(1, 10, 2))
[0 1 2 3 4 5 6 7 8 9]
[1 3 5 7 9]

多次元配列を作成します

  • ゼロ
# zeros全是0
print(np.zeros((3, 4)))    
print('-' * 20)
print(np.zeros((2, 4, 3)))     # 3控制一维,(3,4)控制二维,(3,4,5)控制三维
[[0. 0. 0. 0.]
 [0. 0. 0. 0.]
 [0. 0. 0. 0.]]
--------------------
[[[0. 0. 0.]
  [0. 0. 0.]
  [0. 0. 0.]
  [0. 0. 0.]]

 [[0. 0. 0.]
  [0. 0. 0.]
  [0. 0. 0.]
  [0. 0. 0.]]]
  • もの
# ones全是1
print(np.ones((3, 4)))
[[1. 1. 1. 1.]
 [1. 1. 1. 1.]
 [1. 1. 1. 1.]]
  • EYS
print(np.eye(5))
[[1. 0. 0. 0. 0.]
 [0. 1. 0. 0. 0.]
 [0. 0. 1. 0. 0.]
 [0. 0. 0. 1. 0.]
 [0. 0. 0. 0. 1.]]

行列演算

+   两个矩阵对应元素相加
-   两个矩阵对应元素相减
*   两个矩阵对应元素相乘
/   两个矩阵对应元素相除,如果都是整数则取商
%   两个矩阵对应元素相除后取余数
**n 单个矩阵每个元素都取n次方,如**2:每个元素都取平方
# 元素对应相加,可以加一维,但是不要这么做
arr1 = np.array([[1, 2, 3], [4, 5, 6]])
arr2 = np.array([[7, 8, 9], [10, 11, 12]])
print(arr1+arr2)

#...其余方法都大同小异
[[ 8 10 12]
 [14 16 18]]

小数点乗算、転置、反転(理解、数学の知識)

# 点乘
# 需要一个(m,n)的数组和一个(n,m)的数组
# T可以把数组转置
np.dot(arr1, arr2.T)
array([[ 50,  68],
       [122, 167]])
# 求逆
np.linalg.inv(np.dot(arr1, arr2.T))
array([[ 3.09259259, -1.25925926],
       [-2.25925926,  0.92592593]])

極端な値

print(arr1)
print(arr1.max())
print(arr1.min())
[[1 2 3]
 [4 5 6]]
6
1

numpyのは、乱数を生成し、

np.random.rand(3, 4)
array([[0.95163457, 0.8643344 , 0.86843741, 0.45000529],
       [0.01025429, 0.25391508, 0.28262799, 0.88679772],
       [0.43937459, 0.13525713, 0.13961072, 0.61232842]])

それはランダムではない固定乱数、

rs = np.random.RandomState(1)
print(rs.rand(3, 4))

# 和上面作用相同
# np.random.seed(1)
# print(np.random.rand(3, 4))
[[4.17022005e-01 7.20324493e-01 1.14374817e-04 3.02332573e-01]
 [1.46755891e-01 9.23385948e-02 1.86260211e-01 3.45560727e-01]
 [3.96767474e-01 5.38816734e-01 4.19194514e-01 6.85219500e-01]]

3次元配列(理解)

  • 複数の面(二次元アレイ)

おすすめ

転載: www.cnblogs.com/lucky75/p/11011604.html