Python - Numpy库的使用(简单易懂)(1)

简介: Python - Numpy库的使用(简单易懂)(1)

numpy多维数组——数组的创建

1、array函数创建数组对象

  • 语法格式:np.array(object, dtype=None, ndmin=0)
import numpy as np                     #导入模块并命名为 np
arr1 = np.array([1,2,3],dtype='float') #创建一维数组,数据类型为float
print("一维数组:\n",arr1)
arr2 = np.array([[1, 2, 3], [4, 5, 6]])#创建一个二维数组
print("二维数组:\n",arr2)
一维数组:
 [1. 2. 3.]
二维数组:
 [[1 2 3]
 [4 5 6]]

2、通过arange、linspace函数创建等差数组对象

arange函数语法格式:np.arange(start, end, step, dtype = None) 左闭右开区间

linspace函数语法格式:np.linspace(start, end, num, endpoint=True) 闭区间

import numpy as np             #导入模块并命名为 np
a_arange=np.arange(1,20,5)     #在区间[1, 20)生成初始值为1,步长为5的等差数列
print("arange创建数组:\n",a_arange)       
a_linspace=np.linspace(-1,2,5)  #区间[-1,2]生成初始值-1,5个等间距的等差数列        
print("linspace创建数组:\n",a_linspace)  
arange创建数组:
 [ 1  6 11 16]
linspace创建数组:
 [-1.   -0.25  0.5   1.25  2.  ]

3、通过logspace函数创建等比数列数组

  • 语法格式:np.logspace(start, end, num, endpoint=True, base=10.0)
# 构造从2的0次方到2的9次方的等比数列,该等比数列长度是10个元素.
import numpy as np
a_logspace =np.logspace(0,9,10,base=2)
print(a_logspace)
[  1.   2.   4.   8.  16.  32.  64. 128. 256. 512.]

函数 zeros ones diag eye full

import numpy as np                      #导入模块并命名为 np
a_zeros1 = np.zeros(3,dtype=int)        #创建元素值全是0的一维数组,数据类型为int
print("由0组成的一维数组:\n",a_zeros1)
a_zeros2 = np.zeros([3, 4])               #创建元素值全是0的二维数组
print("由0组成的二维数组:\n",a_zeros2)
b_ones1 = np.ones(3)                      #创建元素值全是1的一维数组
print("由1组成的一维数组:\n",b_ones1)
b_ones2 = np.ones([3, 4])                 #创建元素值全是1的二维数组
print("由1组成的二维数组:\n",b_ones2)
c_diag = np.diag([1,2,3,4])               #创建对角线数组
print("给定对角线二维数组:\n",c_diag)
d_eye=np.eye(3)                           #创建单位数组
print("单位数组:\n",d_eye)
e_full=np.full([4,4], 3)                   #创建值相同的二维数组数组
print("值相同的二维数组数组:\n",e_full)
由0组成的一维数组:
 [0 0 0]
由0组成的二维数组:
 [[0. 0. 0. 0.]
 [0. 0. 0. 0.]
 [0. 0. 0. 0.]]
由1组成的一维数组:
 [1. 1. 1.]
由1组成的二维数组:
 [[1. 1. 1. 1.]
 [1. 1. 1. 1.]
 [1. 1. 1. 1.]]
给定对角线二维数组:
 [[1 0 0 0]
 [0 2 0 0]
 [0 0 3 0]
 [0 0 0 4]]
单位数组:
 [[1. 0. 0.]
 [0. 1. 0.]
 [0. 0. 1.]]
值相同的二维数组数组:
 [[3 3 3 3]
 [3 3 3 3]
 [3 3 3 3]
 [3 3 3 3]]

numpy多维数组——生成随机数

函数 seed rand randn randint

1688987495372.png

import numpy as np                                   #导入模块并命名为 np
np.random.seed(100)                                   #同一种子产生的一组随机数是相同的
a_randint1=np.random.randint(0, 20, 5)       # 生成一维数组, 5个0到20之间的随机整数
print("由随机整数组成的一维数组:\n",a_randint1)
a_randint2=np.random.randint(0, 20, (3,4))   # 3行4列二维数组,随机整数都介于[0,20)
print("由随机整数组成的二维数组:\n",a_randint2)
b_rand=np.random.rand(5)                              # 5个介于[0,1)的随机数一维数组
print("由随机数组成的一维数组:\n",b_rand)
c_randn=np.random.randn(5)                        # 产生5个标准正态分布随机数组成一维数组
print("产生5个标准正态分布随机数组成一维数组:\n",c_randn)
由随机整数组成的一维数组:
 [ 8  3  7 15 16]
由随机整数组成的二维数组:
 [[10  2  2  2]
 [14  2 17 16]
 [15  4 11 16]]
由随机数组成的一维数组:
 [0.56229626 0.00581719 0.30742321 0.95018431 0.12665424]
产生5个标准正态分布随机数组成一维数组:
 [-0.23198063 -0.51772213  1.43018797  0.94971126  0.65692046]

函数 binomial normal 和不常用函数

1688987557660.png

import numpy as np                   #导入numpy模块并命名为 np
import matplotlib.pyplot as plt           #导入绘图模块并命名为plt
mu=1                     #数学期望:1
sigma=3                 #标准差:3
num=1000000      #个数:1000000
rand_data = np.random.normal(mu, sigma, num)    #产生正态分布的随机数
plt.hist(rand_data, 100)                 #绘制直方图
plt.show()                                         #显示图片

shuffle函数

shuffle函数功能是将序列类型中的元素随机排列,返回打乱后的序列。对多维数组进行打乱排列时,默认是对第一个维度也就是列维度进行随机打乱

import numpy as np
arr1= np.arange(10)
print("一维数组原顺序:\n",arr1)
np.random.shuffle(arr1)
print("一维数组打乱顺序:\n",arr1)
np.random.seed(100)
arr2=np.arange(1,13).reshape(3,4)
print("二维数组原顺序:\n",arr2)
np.random.shuffle(arr2)
print("二维数组打乱顺序:\n",arr2)
一维数组原顺序:
 [0 1 2 3 4 5 6 7 8 9]
一维数组打乱顺序:
 [8 1 4 6 7 2 5 3 0 9]
二维数组原顺序:
 [[ 1  2  3  4]
 [ 5  6  7  8]
 [ 9 10 11 12]]
二维数组打乱顺序:
 [[ 5  6  7  8]
 [ 9 10 11 12]
 [ 1  2  3  4]]

numpy多维数组——数组的属性

属性  .ndim  .shape .szie .dtype .itemszie

1688987609150.png

import numpy as np
a1 = np.arange(1,13)
print("一维数组a1:{}".format(a1))
print("一维数组a1的维度:{}".format(a1.ndim))
print("一维数组a1的形状:{}".format(a1.shape))
print("一维数组a1的元素个数:{}".format(a1.size))
a2= np.array([[1,2,3],[4,5,6]])
print("二维数组a2:\n{}".format(a2))
print("二维数组a2的维度:{}".format(a2.ndim))
print("二维数组a2的形状:{}".format(a2.shape))
print("二维数组a2的元素个数:{}".format(a2.size))
一维数组a1:[ 1  2  3  4  5  6  7  8  9 10 11 12]
一维数组a1的维度:1
一维数组a1的形状:(12,)
一维数组a1的元素个数:12
二维数组a2:
[[1 2 3]
 [4 5 6]]
二维数组a2的维度:2
二维数组a2的形状:(2, 3)
二维数组a2的元素个数:6
Process finished with exit code 0

注意一维形状表示!

numpy多维数组——数组的变换

数组重塑方法 .reshape  .flatten

方法

说明

.reshape(shape)

不改变数组元素,返回一个shape形状的数组,原数组不变

.flatten()

对数组进行降维,返回折叠后的一维数组,原数组不变

import numpy as np
a1 = np.arange(1,13)     #生成一维数组
print("一维数组a1:\n{}".format(a1))
a2=a1.reshape(3,4)       #将原数组重塑成3行4列的新数组
print("reshape重塑数组生成新数组a2:\n{}".format(a2))
a3=a1.reshape(-1,6)      #将原数组重塑成x行6列的新数组
print("reshape重塑数组生成新数组a3:\n{}".format(a3))
print("原数组a1不变:{}".format(a1))
a4=a3.flatten()          #使用flatten函数把a3中的数据展开成一维数组
print("flatten函数把a3中的数据展开成一维数组a4:\n{}".format(a4))
一维数组a1:
[ 1  2  3  4  5  6  7  8  9 10 11 12]
reshape重塑数组生成新数组a2:
[[ 1  2  3  4]
 [ 5  6  7  8]
 [ 9 10 11 12]]
reshape重塑数组生成新数组a3:
[[ 1  2  3  4  5  6]
 [ 7  8  9 10 11 12]]
原数组a1不变:[ 1  2  3  4  5  6  7  8  9 10 11 12]
flatten函数把a3中的数据展开成一维数组a4:
[ 1  2  3  4  5  6  7  8  9 10 11 12]
Process finished with exit code 0

数组合并 .hstack() .vstack() .concatenate((),axis=0/1)

数组的合并是指沿着特定的方向把多个数组合并到一起,numpy使用hstack、vstack和concatenate函数用于实现多个数组的合并。

import numpy as np
#水平合并(左右合并)  要求两个数组的行数一致
A = np.zeros((2, 3), int)
B = np.ones((2, 4), int)
print("A=\n", A)
print("B=\n", B)
print("hstack水平合并:\n", np.hstack((A, B)))
# axis =0垂直,1是水平
print("concatenate水平合并:\n", np.concatenate((A, B), axis=1)) 
A=
 [[0 0 0]
 [0 0 0]]
B=
 [[1 1 1 1]
 [1 1 1 1]]
hstack水平合并:
 [[0 0 0 1 1 1 1]
 [0 0 0 1 1 1 1]]
concatenate水平合并:
 [[0 0 0 1 1 1 1]
 [0 0 0 1 1 1 1]]
import numpy as np
# 垂直合并(上下合并)  两个数组列数一致
A = np.zeros((2,5), int)
B = np.ones((3, 5), int)
print("A=\n", A)
print("B=\n", B)
print("vstack垂直合并\n", np.vstack((A, B)))
# axis =0垂直,1是水平
print("concatenate垂直合并\n", np.concatenate((A, B), axis=0))
A=
 [[0 0 0 0 0]
 [0 0 0 0 0]]
B=
 [[1 1 1 1 1]
 [1 1 1 1 1]
 [1 1 1 1 1]]
vstack垂直合并
 [[0 0 0 0 0]
 [0 0 0 0 0]
 [1 1 1 1 1]
 [1 1 1 1 1]
 [1 1 1 1 1]]
concatenate垂直合并
 [[0 0 0 0 0]
 [0 0 0 0 0]
 [1 1 1 1 1]
 [1 1 1 1 1]
 [1 1 1 1 1]]

数组分割 .hsplit() .vsplit() .split()

与数组的合并相反,数组的分割是指沿着特定的方向把一个数组分割为多个小数组, numpy使用hsplit 、vsplit 和split 函数用于实现数组的分割。数组拆分后为list类型。

import numpy as np
arr=np.arange(12).reshape(3,4)
print("原数组:\n",arr)
print("水平分割为:\n",np.hsplit(arr,2))
print("垂直分割为:\n",np.vsplit(arr,3))
#axis=1,水平分割,axis=0,垂直分割
arr_split=np.split(arr,2,axis=1)
print("使用split水平拆分后的新数组:\n",arr_split)
print(type(arr_split))#新数据的数据类型为列表,列表中的元素是分割后的数组
print(type(arr))
原数组:
 [[ 0  1  2  3]
 [ 4  5  6  7]
 [ 8  9 10 11]]
水平分割为:
 [array([[0, 1],
       [4, 5],
       [8, 9]]), array([[ 2,  3],
       [ 6,  7],
       [10, 11]])]
垂直分割为:
 [array([[0, 1, 2, 3]]), array([[4, 5, 6, 7]]), array([[ 8,  9, 10, 11]])]
使用split水平拆分后的新数组:
 [array([[0, 1],
       [4, 5],
       [8, 9]]), array([[ 2,  3],
       [ 6,  7],
       [10, 11]])]
<class 'list'>
<class 'numpy.ndarray'>
Process finished with exit code 0
相关文章
|
1天前
|
网络协议 数据处理 调度
深入探索Python异步编程:asyncio库的应用与实践
在现代软件开发中,异步编程已成为处理并发和I/O密集型任务的重要策略。本文将带您深入探索Python的asyncio库,解析其背后的设计原理,并通过实例展示如何在实际项目中应用asyncio实现高效的异步编程。我们不仅会探讨asyncio的基本用法,还会分析其性能优势,并探讨其与其他并发模型的比较。此外,文章还将涵盖asyncio在Web开发、网络编程和数据处理等场景中的应用案例,帮助您更好地理解并掌握这一强大的异步编程工具。
|
1天前
|
程序员 Python
tesseract库的安装与使用及在python中使用,Python程序员秋招三面蚂蚁金服
tesseract库的安装与使用及在python中使用,Python程序员秋招三面蚂蚁金服
|
1天前
|
Python
Python基础教程: math库常用函数(1),Python这些高端技术只有你还不知道
Python基础教程: math库常用函数(1),Python这些高端技术只有你还不知道
|
1天前
|
Python
使用Python的openpyxl库
【5月更文挑战第17天】使用Python的openpyxl库
12 2
|
2天前
|
数据可视化 Python
Python----matplotlib库
Python----matplotlib库
8 1
|
2天前
|
监控 调度 开发者
Python 中的异步编程:理解 asyncio 库的基本原理与应用
本文将深入探讨 Python 中的异步编程技术,重点介绍 asyncio 库的基本原理与应用。通过解释事件循环、协程和 Future 对象的概念,读者将能够理解异步编程的工作原理,并学会如何利用 asyncio 库提高程序的性能和效率。本文还将通过实际示例演示如何使用 asyncio 库来处理 I/O 密集型任务和 CPU 密集型任务,以及如何避免常见的陷阱和错误。
|
2天前
|
调度 UED Python
Python 中的异步编程:理解 asyncio 库的基本原理与应用
本文探讨了 Python 中的异步编程,重点介绍了 asyncio 库的基本原理与应用。通过分析事件循环、协程以及异步/await 关键字的作用机制,读者将能够深入理解异步编程的工作方式,并学会如何利用 asyncio 库构建高效的异步应用程序。同时,本文还介绍了一些实际案例,帮助读者更好地掌握 asyncio 库的实际应用。
|
3天前
|
存储 机器学习/深度学习 数据处理
NumPy:从初识到实战,探索Python科学计算的无限可能
NumPy:从初识到实战,探索Python科学计算的无限可能
38 0
|
3天前
|
机器学习/深度学习 存储 算法
Python中的NumPy库:数值计算与科学计算的基石
【2月更文挑战第29天】NumPy是Python科学计算的核心库,专注于高效处理大型多维数组和矩阵。其核心是ndarray对象,提供快速数组操作和数学运算,支持线性代数、随机数生成等功能。NumPy广泛应用于数据处理、科学计算和机器学习,简化了矩阵运算、统计分析和算法实现,是数据科学和AI领域的重要工具。
|
3天前
|
存储 索引 Python
请解释Python中的NumPy库以及它的主要用途。
【2月更文挑战第27天】【2月更文挑战第97篇】请解释Python中的NumPy库以及它的主要用途。