Python3 numpy 基础操作

1. 概述

本篇博文主要是 Python3 Numpy 的一些基础操作。

2. 具体实现

2.1 基本概念

## 数组--->矩阵
array = np.array([  # List to array
        [1, 2, 3],
        [2, 3, 4]
    ]
)

print(array)
print('number of dim:', array.ndim) # 维度
print('shape:', array.shape)    # 形状
print('size:', array.size)  # 元素数目

在这里插入图片描述

2.2 数据类型

"""
# 数据类型指定
"""
a0 = np.array([1, 2, 3])    # 一维数组
print(a0)
aa = np.zeros((3, 4), dtype=np.int32)   # 生成全 0 矩阵
print(aa)
bb = np.ones((3,4), dtype=np.float32)   # 生成全 1 矩阵
print(bb)
cc = 3 * np.ones((3,4)) # 生成全 3 的矩阵
print(cc)
dd = np.empty((3, 4), dtype=np.float64)   # 生成 空 矩阵
dd.fill(9)  # 空矩阵里面填充 9
print(dd)

在这里插入图片描述

2.3 数据生成, 转换

a0 = np.arange(10)  #数组, 0~9
print(a0)
a1 = np .arange(0, 12, 2)   # 按一定间隔生成数据
print(a1)
a2 = a1.reshape((2, 3)) # 数组转为矩阵
print(a2)
a3 = np.linspace(1, 10, 5)  # 指定区间生成对应的数据个数
print(a3)

在这里插入图片描述

2.4 基本运算

"""
# 基本运算
"""
a0 = np.array([1, 2, 3, 4])     # 数组1
print(a0)
a1 = np.arange(4)   # 数组2
print(a1)
print(a0 + a1)  # 数组求和
print(a0 < 3)   # 返回的是 Bool 值
a2 = np.sin(a0)     # 三角函数求值
print(a2)

b0 = np.array([[1, 0],
               [0, 1]
               ])
print(b0)
b1 = np.arange(4).reshape((2, 2))
print(b1)
b2 = b0 + b1
print(b2)
b3 = np.dot(b0, b1)     # 矩阵乘法1
b4 = b0.dot(b1)         # 矩阵乘法2
b5 = b0 * b1            # 逐个数相乘, 不是矩阵乘法
print(b3)
print(b4)
print(b5)

b6 = np.random.random((2, 4))   # 参数为 shape, 范围0~1
print(b6)
print(np.sum(b6))
print(np.max(b6))
print(np.min(b6))
print(np.max(b6, axis=0))   # axis=0 列
print(np.max(b6, axis=1))   # axis=1 行

2.5 求值

"""
# 求值 = 最大/最小/平均/索引值/中位数/累加/累差/转置/替换
"""
A = np.arange(14, 2, -1).reshape(3, 4)
print(A)
arg_min = np.argmin(A)  # 最小值索引
print(arg_min)
arg_max = np.argmax(A)  # 最大值索引
print(arg_max)
arg_mean = np.mean(A)  # 平均值  A.mean()
print(arg_mean)
arg_mean0 = np.mean(A, axis=0)   # axis=0 列
print(arg_mean0)
arg_mean1 = np.mean(A, axis=1)  # axis=1 行
print(arg_mean1)
arg_median = np.median(A)   # 中位数
print(arg_median)
arg_cum = np.cumsum(A)  # 累加
print(arg_cum)
arg_diff = np.diff(A)   # 累差
print(arg_diff)
arg_nonzero = np.nonzero(A)     # 非零, 返回的是行号, 列号
print(arg_nonzero)
arg_sort = np.sort(A)   # 按照行排序元素
print(arg_sort)
arg_trans = np.transpose(A)   # 转置 A.T
print(arg_trans)
print(arg_trans.shape)
arg_clip = np.clip(A, 3, 9)   # 修改头尾数字, 3~9中间数字不变
print(arg_clip)

2.6 索引, 展平

"""
# 索引, 展平
"""
A = np.arange(3, 15)    # 数组
print(A)
print(A[2])     # 数组, 序号索引
A = A.reshape((3, 4))   # 矩阵
print(A)
print(A[2]) #第二行, 不再是元素
print(A[1][1], A[1, 1])  #矩阵中索引单独元素
print(A[1, :])  # 第一行的所有元素
print(A[:, 1]) # 第一列的所有元素

for row in A:   # 迭代出行
    print(row)
for column in A.T:  # 迭代出列
    print(column)
for item in A.flat:     # 迭代出矩阵中的每一个元素
    print(item)
print(A.flatten())  # 矩阵展平

2.7 合并

"""
# 合并
"""
A = np.array([1, 1, 1])
B = np.array([2, 2, 2])
C = np.vstack((A, B))   # 上下合并
print(A.shape, C.shape)
print(C)
D = np.hstack((A, B))   #左右合并
print(A.shape, D.shape)
print(D)
A1 = A[:, np.newaxis]    # 维度变换
B1 = B[:, np.newaxis]
E = np.concatenate((A1, B1), axis=1)  # 按行列拼接数据
print(E)
print(A.shape, B.shape)
print(A1.shape, B1.shape)
print(E.shape)

2.8 分割

"""
# 分割
"""
A = np.arange(12).reshape((3, 4))
print(A)
# split 只能等分!!!
A1 = np.split(A, 2, axis=1)  # 竖向分割
print(A1)
A2 = np.split(A, 3, axis=0)     # 横向分割, 即按照行
print(A2)
A3 = np.array_split(A, 3, axis=1)   # 不等分割
print(A3)
A4 = np.vsplit(A, 3)    # 纵向分割, 等分, 行方向, 分3行
print(A4)
A5 = np.hsplit(A, 2)    # 横向分割, 等分, 列方向, 4列分 2 2
print(A5)

2.9 拷贝, 赋值

"""
# 拷贝, 赋值
"""
A = np.arange(4)
print(A)
B = A   # 直接赋值, 各个变量的值关联(同一片内存)
C = B
print(B)
print(C)
A[0] = 11
print(A)
print(B)
print(C)
B[1] = 22
print(A)
print(B)
print(C)
D = A.copy()    # deep copy, 只简单复制值
print(D)
A[2:] = 33
print(A)
print(D)


欢迎关注公众号:【千艺千寻】,共同成长


参考

  1. 【莫烦Python】Numpy & Pandas (数据处理教程)

猜你喜欢

转载自blog.csdn.net/wwt18811707971/article/details/128953124