2022Python最全NumPy库相关知识

Numpy库相关知识

一、概述

NumPy(Numerical Python) 是 Python 语言的一个扩展程序库,支持大量的维度数组与矩阵运算,此外也针对数组运算提供大量的数学函数库。

二、具体使用

1、单个矩阵的基础使用

1.1 定义一个矩阵

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

print(array)

结果
在这里插入图片描述

(1)针对上面矩阵,判断数据是几维数据
print('-----------------几维数据-------------------')
# 数据是几维的
print('number of dim:', array.ndim)

结果
在这里插入图片描述

(2)针对上面矩阵,判断数据的形态
print('------------------数据的形态-----------------')
# 数据的形态
print('shape:', array.shape)

结果
在这里插入图片描述

(3)针对上面矩阵,判断元素的数量
print('------------------元素数量-------------------')
# 有多少个元素
print('size:', array.size)

结果
在这里插入图片描述

1.2 定义一个数列,同时指定类型

a = np.array([23, 445, 677, 32], dtype=np.float64)

print('------------------指定数据的类型 dtype---------------')
# 指定数据的类型 dtype
print(a)
print(a.dtype)

结果
在这里插入图片描述

1.3 定义为3行4列的零矩阵

# 定义为0的矩阵 3行,4列
b = np.zeros((3, 4))

print(b)

结果
在这里插入图片描述

1.4 定义有序数列

# 定义有序数列
c = np.arange(10, 20, 2)

print(c)

结果
在这里插入图片描述

1.5 定义3行4列的有序数列

# 定义3行4列的有序数列
d = np.arange(12).reshape((3, 4))

 print(d)

结果
在这里插入图片描述

1.6 从1到10生成6条线段

# 从1到10生成6段线段
e = np.linspace(1, 10, 5)

 print(e)

结果
在这里插入图片描述

1.7 更改原本形状

# 更改原本形状
e2 = np.linspace(1, 10, 6).reshape((2, 3))

print(e2)

结果
在这里插入图片描述

1.8 完整代码

import numpy as np

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

a = np.array([23, 445, 677, 32], dtype=np.float64)

# 定义为0的矩阵 3行,4列
b = np.zeros((3, 4))

# 定义有序数列
c = np.arange(10, 20, 2)

# 定义3行4列的有序数列
d = np.arange(12).reshape((3, 4))

# 从1到10生成6段线段
e = np.linspace(1, 10, 5)

# 更改原本形状
e2 = np.linspace(1, 10, 6).reshape((2, 3))

if __name__ == '__main__':
    print(array)

    print('-----------------几维数据-------------------')
    # 数据是几维的
    print('number of dim:', array.ndim)

    print('------------------数据的形态-----------------')
    # 数据的形态
    print('shape:', array.shape)

    print('------------------元素数量-------------------')
    # 有多少个元素
    print('size:', array.size)

    print('------------------指定数据的类型 dtype---------------')
    # 指定数据的类型 dtype
    print(a)
    print(a.dtype)

    # 定义为0的矩阵 3行,4列
    print('------------------定义矩阵--------------------')
    print(b)

    # 定义有序数列
    print('------------------定义有序数列--------------------')
    print(c)

    # 定义3行4列的有序数列
    print('--------------------定义多行有序数列---------------------')
    print(d)

    # 从1到10生成6段线段
    print('---------------------生成多条线段-----------------------')
    print(e)
    print('---------------------更改原本线段形状---------------------------')
    # 更改原本形状
    print(e2)

2、多个矩阵的使用以及相关数学函数

2.1 定义两个矩阵

a = np.array([10, 20, 30, 40])
b = np.arange(4)

print(a, b)

结果
在这里插入图片描述

(1)对于这两个矩阵,进行减法运算
print('-----------减法运算---------')
# 两个数列减法运算
c = a - b

print(c)

结果
在这里插入图片描述

(2)对于单个矩阵,进行平方运算
print('----------平方运算-----------')
# 平方运算
d = a ** 2

print(d)

结果
在这里插入图片描述

(3)对于单个矩阵三角函数的运算
print('---------三角函数运算---------')
# 三角函数运算
e = 10 * np.sin(a)

print(e)

结果
在这里插入图片描述

(4)对于单个矩阵的判断运算
print('----------判断运算-------------')
# <或>或==来进行判断运算
print(b < 3)

结果
在这里插入图片描述

2.2 重新定义两个矩阵

a2 = np.array([[1, 1], [0, 1]])
b2 = np.arange(4).reshape((2, 2))

print('-------------新生成的数据-------------------')
print(a2)
print(b2)

结果
在这里插入图片描述

(1)两个矩阵逐个相乘
print('---------------逐个相乘--------------------')
c2 = a2 * b2
print(c2)

结果
在这里插入图片描述

(2)矩阵相乘
print('----------------矩阵相乘--------------------')
#方式1
c_dot = np.dot(a2, b2)
#方式2
c_dot_2 = a2.dot(b2)

print(c_dot)
print(c_dot_2)

结果
在这里插入图片描述

2.3 定义一个随机数组

a3 = np.random.random((2, 4))

print(a3)

结果
在这里插入图片描述

(1)对上述数组求和
 print('对所有进行求和:', np.sum(a3))

结果
在这里插入图片描述

(2)从左到右计算所有数据,对某一行求和
 print('从左到右计算所有数据,对某一行求和:', np.sum(a3, axis=1))

结果
在这里插入图片描述

(3)从上到下计算所有数据,对某一列求和
print('从上到下计算所有数据,对某一列求和:', np.sum(a3, axis=0))

结果
在这里插入图片描述

(4)求最小值
 print('最小值:', np.min(a3))

结果
在这里插入图片描述

(5)求最大值
print('最大值:', np.max(a3))

结果
在这里插入图片描述

2.4 完整代码

import numpy as np

a = np.array([10, 20, 30, 40])
b = np.arange(4)

a2 = np.array([[1, 1], [0, 1]])
b2 = np.arange(4).reshape((2, 2))

a3 = np.random.random((2, 4))

if __name__ == '__main__':
    print(a, b)

    print('-----------减法运算---------')
    # 两个数列减法运算
    c = a - b
    print(c)

    print('----------平方运算-----------')
    # 平方运算
    d = a ** 2
    print(d)

    print('---------三角函数运算---------')
    # 三角函数运算
    e = 10 * np.sin(a)
    print(e)

    print('----------判断运算-------------')
    # <或>或==来进行判断运算
    print(b < 3)

    print('-------------新生成的数据-------------------')
    print(a2)
    print(b2)

    print('---------------逐个相乘--------------------')
    c2 = a2 * b2
    print(c2)

    print('----------------矩阵相乘--------------------')
    c_dot = np.dot(a2, b2)
    c_dot_2 = a2.dot(b2)
    print(c_dot)
    print(c_dot_2)

    print('-------------------生成的随机数--------------------')
    print(a3)
    print('对所有进行求和:', np.sum(a3))
    print('从左到右计算所有数据,对某一行求和:', np.sum(a3, axis=1))
    print('从上到下计算所有数据,对某一列求和:', np.sum(a3, axis=0))
    print('最小值:', np.min(a3))
    print('最大值:', np.max(a3))

3、索引及数学操作

3.1 定义一个数列

a = np.arange(2, 14).reshape((3, 4))

print('----------------------原数列---------------------')
print(a)

结果
在这里插入图片描述

(1)针对上述数列,找出最小值的索引
print('----------------------最小值索引-------------------')
# 找出最小值的索引
print(np.argmin(a))

结果
在这里插入图片描述

(2)针对上述数列,找出最大值索引
print('---------------------最大值索引---------------------')
# 找出最大值的索引
print(np.argmax(a))

结果
在这里插入图片描述

(3)针对上述数列,求取平均值
print('---------------------求平均值------------------------')
# 求平均值
print(np.mean(a))

结果
在这里插入图片描述

(4)针对上述数列,求中位数
print('---------------------求中位数------------------------')
# 求中位数
print(np.median(a))

结果
在这里插入图片描述

(5)对上述数组进行累加
print('---------------------累加------------------------')
# 累加
print(np.cumsum(a))

结果
在这里插入图片描述

(6)求两个数之间的差值
print('---------------------两个之间差值------------------------')
# 两个数之间差值
print(np.diff(a))

结果
在这里插入图片描述

(7)求非零数的行和列
print('---------------------求非零数的行和列------------------------')
# 求非零数的行和列
print(np.nonzero(a))

结果
在这里插入图片描述

3.2 重新定义一个数列

a2 = np.arange(14, 2, -1).reshape((3, 4))

print('原数组')
print(a2)

结果
在这里插入图片描述

(1)对新的数列,逐行进行排序
print('---------------------逐行进行排序------------------------')
# 逐行进行排序
print(np.sort(a2))

结果

在这里插入图片描述

(2)矩阵的反向
print('---------------------矩阵的反向------------------------')
# 矩阵的反向
print('矩阵的反向方式1')
print(np.transpose(a2))
print('矩阵的反向方式2')
print(a2.T)

结果
在这里插入图片描述

(3)clip功能
print('---------------------clip功能------------------------')
# clip功能
print(np.clip(a2, 5, 9))

结果
在这里插入图片描述

(4)对该数列,从上到下求平均值
print('--------------------从上到下求平均值------------------------')
print(np.mean(a2, axis=0))

结果
在这里插入图片描述

(5)对该数列,从左到右求平均值
print('--------------------从左到右求平均值------------------------')
print(np.mean(a2, axis=1))

结果
在这里插入图片描述

3.3 完整代码

import numpy as np

a = np.arange(2, 14).reshape((3, 4))

a2 = np.arange(14, 2, -1).reshape((3, 4))

if __name__ == '__main__':
    print('----------------------原数列---------------------')
    print(a)

    print('----------------------最小值索引-------------------')
    # 找出最小值的索引
    print(np.argmin(a))

    print('---------------------最大值索引---------------------')
    # 找出最大值的索引
    print(np.argmax(a))

    print('---------------------求平均值------------------------')
    # 求平均值
    print(np.mean(a))

    print('---------------------求中位数------------------------')
    # 求中位数
    print(np.median(a))

    print('---------------------累加------------------------')
    # 累加
    print(np.cumsum(a))

    print('---------------------两个之间差值------------------------')
    # 两个数之间差值
    print(np.diff(a))

    print('---------------------求非零数的行和列------------------------')
    # 求非零数的行和列
    print(np.nonzero(a))

    print('----------------------分割线-----------------------------')
    print('原数组')
    print(a2)

    print('---------------------逐行进行排序------------------------')
    # 逐行进行排序
    print(np.sort(a2))

    print('---------------------矩阵的反向------------------------')
    # 矩阵的反向
    print('矩阵的反向方式1')
    print(np.transpose(a2))
    print('矩阵的反向方式2')
    print(a2.T)

    print('---------------------clip功能------------------------')
    # clip功能
    print(np.clip(a2, 5, 9))

    print('--------------------从上到下求平均值------------------------')
    print(np.mean(a2, axis=0))

    print('--------------------从左到右求平均值------------------------')
    print(np.mean(a2, axis=1))

4、数列合并

4.1 定义横向数列

a = np.array([1, 1, 1])
b = np.array([2, 2, 2])

print(a, b)

结果
在这里插入图片描述

(1)横向数列上下合并操作
print('-------------------------横向数列上下合并操作---------------------')
c = np.vstack((a, b))
print(c)

结果
在这里插入图片描述

(2)左右合并操作
print('-------------------------左右合并操作---------------------')
c2 = np.hstack((a, b))
print(c2)

结果
在这里插入图片描述

(3)横向数列变纵向数列
print('-------------------------横向变纵向-----------------------')
print(a[:, np.newaxis])

结果
在这里插入图片描述

4.2 将原数组变为纵向

a2 = np.array([1, 1, 1])[:, np.newaxis]
b2 = np.array([2, 2, 2])[:, np.newaxis]

print(a2)
print(b2)

结果
在这里插入图片描述

(1)在上述基础上,纵向数列上下合并
print('-------------------------纵向数列上下合并操作---------------------')
c3 = np.vstack((a2, b2))
print(c3)

结果
在这里插入图片描述

(2)在上述基础上,纵向数列左右合并
print('-------------------------左右合并操作---------------------')
c4 = np.hstack((a2, b2))
print(c4)

结果
在这里插入图片描述

(3)从上到下,多个合并
print('-------------------------多个合并--------------------------')
print('-------------从上到下多个合并---------------')
d = np.concatenate((a2, b2, b2, a2), axis=0)
print(d)

结果
在这里插入图片描述

(4)从左到右,多个合并
print('-------------从左到右多个合并---------------')
d2 = np.concatenate((a2, b2, b2, a2), axis=1)
print(d2)

结果
在这里插入图片描述

4.3 完整代码

import numpy as np

a = np.array([1, 1, 1])
b = np.array([2, 2, 2])

a2 = np.array([1, 1, 1])[:, np.newaxis]
b2 = np.array([2, 2, 2])[:, np.newaxis]

if __name__ == '__main__':
    print(a, b)

    print('-------------------------横向数列上下合并操作---------------------')
    c = np.vstack((a, b))
    print(c)

    print('-------------------------左右合并操作---------------------')
    c2 = np.hstack((a, b))
    print(c2)

    print('-------------------------横向变纵向-----------------------')
    print(a[:, np.newaxis])

    print(a2)
    print(b2)

    print('-------------------------纵向数列上下合并操作---------------------')
    c3 = np.vstack((a2, b2))
    print(c3)

    print('-------------------------左右合并操作---------------------')
    c4 = np.hstack((a2, b2))
    print(c4)

    print('-------------------------多个合并--------------------------')
    print('-------------从上到下多个合并---------------')
    d = np.concatenate((a2, b2, b2, a2), axis=0)
    print(d)

    print('-------------从左到右多个合并---------------')
    d2 = np.concatenate((a2, b2, b2, a2), axis=1)
    print(d2)

5、数列分割

5.1 定义一个数列

a = np.arange(12).reshape((3, 4))

print(a)

结果
在这里插入图片描述

(1)从上到下依次分割
print('----------------------------分割一---------------------------')
print('-------------横向分割方式1 从上到下---------------')
print(np.split(a, 3, axis=0))

结果
在这里插入图片描述

(2)从左到右依次分割
print('-------------纵向分割方式1 从左到右-----------------')
print(np.split(a, 4, axis=1))

结果
在这里插入图片描述

(3)横向分割,按列来分
print('----------------------------分割二---------------------------')
print('-------------横向分割方式2  按列来分---------------')
print(np.hsplit(a, 4))

结果
在这里插入图片描述

(4)纵向分割,按行来分
print('-------------纵向分割方式2  按行来分-----------------')
print(np.vsplit(a, 3))

结果
在这里插入图片描述

5.2 完整代码

import numpy as np

a = np.arange(12).reshape((3, 4))

if __name__ == '__main__':
    print(a)

    print('----------------------------分割一---------------------------')
    print('-------------横向分割方式1 从上到下---------------')
    print(np.split(a, 3, axis=0))

    print('-------------纵向分割方式1 从左到右-----------------')
    print(np.split(a, 4, axis=1))

    print('----------------------------分割二---------------------------')
    print('-------------横向分割方式2  按列来分---------------')
    print(np.hsplit(a, 4))

    print('-------------纵向分割方式2  按行来分-----------------')
    print(np.vsplit(a, 3))

6、索引再探讨

6.1 定义一个数列

a = np.arange(3, 15).reshape((3, 4))

print(a)

结果
在这里插入图片描述

(1)通过索引,求某一行的值
print('-------------------得出索引值----------------')
print('第二行所有数(方式1)', a[2])
print('第二行所有数(方式2):', a[2, :])

结果
在这里插入图片描述

(2)迭代输出每一行
 print('--------------------迭代输出每一行----------------')
 for row in a:
     print(row)

结果
在这里插入图片描述

(3)迭代输出每一列
print('--------------------迭代输出每一列----------------')
for column in a.T:
    print(column)

结果
在这里插入图片描述

(6)flatten返回改变的array数列, flat迭代器
print('---------------------flatten返回改变的array数列, flat迭代器----------------')
print(a.flatten())
for item in a.flat:
    print(item)

结果
在这里插入图片描述

6.2 完整代码

import numpy as np

a = np.arange(3, 15).reshape((3, 4))

if __name__ == '__main__':
    print(a)

    print('-------------------得出索引值----------------')
    print('第二行所有数(方式1)', a[2])
    print('第二行所有数(方式2):', a[2, :])

    print('--------------------迭代输出每一行----------------')
    for row in a:
        print(row)

    print('--------------------迭代输出每一列----------------')
    for column in a.T:
        print(column)

    print('---------------------flatten返回改变的array数列, flat迭代器----------------')
    print(a.flatten())
    for item in a.flat:
        print(item)

7、复制(deep copy)

a = [1, 2, 3, 4]
print('深入复制,不会相互关联')
b = a.copy()
a[2] = 23

print(a)
print(b)

结果
在这里插入图片描述

完整代码

import numpy as np

a = [1, 2, 3, 4]
print('深入复制,不会相互关联')
b = a.copy()
a[2] = 23

if __name__ == '__main__':
    print(a)
    print(b)

  • 1
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

熊凯瑞

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值