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
相关文章
|
24天前
|
XML JSON 数据库
Python的标准库
Python的标准库
162 77
|
2月前
|
机器学习/深度学习 算法 数据挖掘
数据分析的 10 个最佳 Python 库
数据分析的 10 个最佳 Python 库
102 4
数据分析的 10 个最佳 Python 库
|
25天前
|
XML JSON 数据库
Python的标准库
Python的标准库
47 11
|
2月前
|
人工智能 API 开发工具
aisuite:吴恩达发布开源Python库,一个接口调用多个大模型
吴恩达发布的开源Python库aisuite,提供了一个统一的接口来调用多个大型语言模型(LLM)服务。支持包括OpenAI、Anthropic、Azure等在内的11个模型平台,简化了多模型管理和测试的工作,促进了人工智能技术的应用和发展。
132 1
aisuite:吴恩达发布开源Python库,一个接口调用多个大模型
|
25天前
|
数据可视化 Python
以下是一些常用的图表类型及其Python代码示例,使用Matplotlib和Seaborn库。
通过这些思维导图和分析说明表,您可以更直观地理解和选择适合的数据可视化图表类型,帮助更有效地展示和分析数据。
64 8
|
1月前
|
安全 API 文件存储
Yagmail邮件发送库:如何用Python实现自动化邮件营销?
本文详细介绍了如何使用Yagmail库实现自动化邮件营销。Yagmail是一个简洁强大的Python库,能简化邮件发送流程,支持文本、HTML邮件及附件发送,适用于数字营销场景。文章涵盖了Yagmail的基本使用、高级功能、案例分析及最佳实践,帮助读者轻松上手。
35 4
|
2月前
|
测试技术 Python
Python中的异步编程与`asyncio`库
Python中的异步编程与`asyncio`库
|
3月前
|
Python
pip批量安装Python库 requirement.txt 离线环境无互联网环境下pip安装Python库
pip批量安装Python库 requirement.txt 离线环境无互联网环境下pip安装Python库
178 3
|
7月前
|
开发工具 git Python
安装和使用`libnum`是一个用于数字理论函数的Python库
【6月更文挑战第19天】`libnum`是Python的数字理论函数库。安装可通过`git clone`,进入目录后运行`python setup.py install`,也可用`pip install libnum`。示例:使用`int_to_hex`将十进制数42转换为十六进制字符串&#39;2a&#39;。注意,信息可能已过时,应查最新文档以确保准确性。如遇问题,参考GitHub仓库或寻求社区帮助。
136 1
|
6月前
|
Python
确保你已经安装了`python-barcode`库。如果没有,可以通过pip来安装:
确保你已经安装了`python-barcode`库。如果没有,可以通过pip来安装: