【数据分析:工具篇】NumPy(2)NumPy深度使用详解-1
创始人
2024-06-03 09:47:25
0

【数据分析:工具篇】NumPy(2)NumPy深度使用详解-1

  • NumPy深度使用详解-1
    • 认识ndarray
    • 数组的创建
      • 使用array函数创建数组
      • 生成有初始占位符的数组
      • 生成固定范围的数组
      • 生成随机数数组
    • 数据类型转换
  • 总结

NumPy深度使用详解-1

NumPy是Python的一个常用科学计算库,它是Numerical Python的缩写。它的核心是一个多维数组对象(ndarray),这个对象是一个快速而灵活的容器,可以用于大量数据集和矩阵计算。

认识ndarray

ndarray是NumPy中最重要的数据结构,它是多维数组(n-dimensional array)的缩写。在numpy中,所有的数据都以ndarray的形式存储和处理。

ndarray有以下几个重要的属性:

  • shape:表示数组的形状,即每个维度的大小。例如,一个形状为(3, 4)的ndarray表示一个3行4列的矩阵。

  • dtype:表示数组的数据类型。例如,一个dtype为int32的ndarray表示每个元素都是32位整数。

  • ndim:表示数组的维度,即数组的秩。例如,一个维度为2的ndarray表示一个二维数组。

ndarray中的每个元素都必须是相同的数据类型,并且在内存中是连续存储的,这使得NumPy能够非常高效地处理大规模的数据。

数组的创建

使用array函数创建数组

可以使用NumPy中的array函数来创建数组。

import numpy as np# 创建一维数组
a = np.array([1, 2, 3])
print(a.ndim, a.shape, a.dtype)
print(a)# 创建二维数组
b = np.array([[1, 2, 3], [4, 5, 6]])
print(b.ndim, b.shape, b.dtype)
print(b)# 创建不同数据类型的数组
a1 = np.array([-1, 0, 1], dtype=int)
a2 = np.array([-1, 0, 1], dtype=float)
a3 = np.array([-1, 0, 1], dtype=bool)
print(a1.dtype, a2.dtype, a3.dtype)
print(a1)
print(a2)
print(a3)

输出内容:

1 (3,) int32
[1 2 3]
2 (2, 3) int32
[[1 2 3][4 5 6]]
int32 float64 bool
[-1  0  1]
[-1.  0.  1.]
[ True False  True]

image-20230313222020603

生成有初始占位符的数组

可以使用zerosonesempty等函数来创建特定形状的数组。

  • np.zeros(shape, dtype=float, order=‘C’),用于生成元素全为0的数组。
  • np.ones(shape, dtype=float, order=‘C’),用于生成元素全为1的数组。
  • np.empty(shape, dtype=float, order=‘C’),用于生成元素为随机数的数组。
# 生成元素全为0的数组
a1 = np.zeros((2,3), dtype=float)
a2 = np.zeros((2,3), dtype=int)
a3 = np.zeros((2,3), dtype=bool)
print(a1)
print(a2)
print(a3)# 生成元素全为1的数组
b1 = np.ones((2,4), dtype=float)
b2 = np.ones((2,4), dtype=int)
b3 = np.ones((2,4), dtype=bool)
print(b1)
print(b2)
print(b3)# 生成元素为随机数的数组
c1 = np.empty((2,5), dtype=float)
c2 = np.empty((2,5), dtype=int)
c3 = np.empty((2,5), dtype=bool)
print(c1)
print(c2)
print(c3)

输出内容:

[[0. 0. 0.][0. 0. 0.]]
[[0 0 0][0 0 0]]
[[False False False][False False False]]
[[1. 1. 1. 1.][1. 1. 1. 1.]]
[[1 1 1 1][1 1 1 1]]
[[ True  True  True  True][ True  True  True  True]]
[[1.93101617e-312 1.44295714e-312 1.59149684e-312 6.57818695e-3131.90979621e-312][8.48798317e-313 8.48798319e-314 1.06099790e-313 1.69759664e-3134.88059032e-313]]
[[93 75 23 23 93][ 8 40 83 93 59]]
[[ True  True  True  True  True][ True  True  True  True  True]]

image-20230313224630615

生成固定范围的数组

NumPy中提供了一些方法,可以用来生成固定范围的数组:

  • numpy.arange(),生成一个可指定起始值(默认为0)、终止值(不包含)、步长的数组。
  • numpy.linspace(),生成一个可指定起始值、终止值、样本数的一维等差数列数组。
  • numpy.logspace(),生成一个可指定起始值、终止值、样本数的一维对数数列数组。
# 生成起始值1、终止值100、步长10的数组
a = np.arange(1, 100, 10)
print(a)# 生成起始值1、终止值100、样本数10个的数组
b = np.linspace(1, 100, 10)
print(b)# 生成起始值1、终止值2、以10为对数底数、样本数9个的数组
c = np.logspace(1.0, 2.0, num=9)
print(c)

输出内容:

[ 1 11 21 31 41 51 61 71 81 91]
[  1.  12.  23.  34.  45.  56.  67.  78.  89. 100.]
[ 10.          13.33521432  17.7827941   23.71373706  31.622776642.16965034  56.23413252  74.98942093 100.        ]

image-20230313225119875

生成随机数数组

NumPy中的random模块提供了各种随机数生成函数,例如rand()、randn()、randint()等,可以生成各种不同类型的随机数,这些随机数在模拟、实验和数据分析等任务中都非常有用。

  • np.random.rand(d0, d1, …, dn):生成[0,1)之间均匀分布的随机数,参数为生成的数组的维度。

  • np.random.random_sample(size=None):与rand()函数相同,生成[0,1)之间均匀分布的随机数。

  • np.random.random(size=None):与random_sample()函数相同,生成在[0, 1)范围内的均匀分布随机数。

  • np.random.randn(d0, d1, …, dn):生成标准正态分布(均值为0,标准差为1)的随机数,参数为生成的数组的维度。

# 生成[0,1)之间均匀分布的随机数
a1 = np.random.rand(20)
a2 = np.random.rand(2, 20)
print(a1)
print(a2)# 生成[0,1)之间均匀分布的随机数
b = np.random.random_sample(20)
print(b)# 生成[0,1)之间均匀分布的随机数
c = np.random.random(20)
print(c)# 生成标准正态分布(均值为0,标准差为1)的随机数
d = np.random.randn(20)
print(d)

image-20230313225956290

import matplotlib.pyplot as plt# 数据可视化
figure, ax = plt.subplots(2, 2)plt.subplot(2, 2, 1)
plt.hist(np.random.rand(2000))
plt.subplot(2, 2, 2)
plt.hist(np.random.random_sample(2000))
plt.subplot(2, 2, 3)
plt.hist(np.random.random(2000))
plt.subplot(2, 2, 4)
plt.hist(np.random.randn(2000))plt.show()

image-20230313230153574

  • np.random.randint(low, high=None, size=None, dtype=‘l’):生成low和high之间的整数,包括low,但不包括high。若high参数没有给出,则生成[0, low)之间的整数。size参数为生成的数组的维度,dtype为所生成整数的数据类型。

  • np.random.choice(a, size=None, replace=True, p=None):从给定的一维数组a中生成随机样本,size参数为生成的数组的维度,replace参数指定是否可以重复采样,p参数为给定的一维数组a中每个元素被选择的概率。

  • np.random.shuffle(x):将给定的序列随机打乱。

# 生成low和high之间的整数,包括low,但不包括high
a1 = np.random.randint(1, 100)
a2 = np.random.randint(1, 100, 20)
print(a1)
print(a2)# 从给定的一维数组a中生成随机样本
b1 = np.random.choice(a2)
b2 = np.random.choice(a2, 10)
print(b1)
print(b2)# 将给定的序列随机打乱
np.random.shuffle(a2)
print(a2)

image-20230313231743948

数据类型转换

NumPy提供了各种数据类型转换函数,可以将数组从一种数据类型转换成另一种数据类型,例如astype()函数可以将数组的数据类型转换成指定的数据类型,这些函数在数据预处理和清洗中经常使用。

# 创建一个浮点数类型的数组
a = np.array([-1, 0, 1], dtype=float)
print(a)# 将浮点数转换成整数
b = a.astype(int)
print(b)# 将整数转换成布尔值
c = a.astype(bool)
print(c)

image-20230314000433256

总结

NumPy提供了丰富的数组操作、数学函数、线性代数、随机数生成等功能,为科学计算和数据分析提供了强大的支持。以上列出的仅仅是一些常见的操作,还有更多更强大的功能我们下次继续探索。

相关内容

热门资讯

喜欢穿一身黑的男生性格(喜欢穿... 今天百科达人给各位分享喜欢穿一身黑的男生性格的知识,其中也会对喜欢穿一身黑衣服的男人人好相处吗进行解...
发春是什么意思(思春和发春是什... 本篇文章极速百科给大家谈谈发春是什么意思,以及思春和发春是什么意思对应的知识点,希望对各位有所帮助,...
网络用语zl是什么意思(zl是... 今天给各位分享网络用语zl是什么意思的知识,其中也会对zl是啥意思是什么网络用语进行解释,如果能碰巧...
为什么酷狗音乐自己唱的歌不能下... 本篇文章极速百科小编给大家谈谈为什么酷狗音乐自己唱的歌不能下载到本地?,以及为什么酷狗下载的歌曲不是...
华为下载未安装的文件去哪找(华... 今天百科达人给各位分享华为下载未安装的文件去哪找的知识,其中也会对华为下载未安装的文件去哪找到进行解...
怎么往应用助手里添加应用(应用... 今天百科达人给各位分享怎么往应用助手里添加应用的知识,其中也会对应用助手怎么添加微信进行解释,如果能...
家里可以做假山养金鱼吗(假山能... 今天百科达人给各位分享家里可以做假山养金鱼吗的知识,其中也会对假山能放鱼缸里吗进行解释,如果能碰巧解...
一帆风顺二龙腾飞三阳开泰祝福语... 本篇文章极速百科给大家谈谈一帆风顺二龙腾飞三阳开泰祝福语,以及一帆风顺二龙腾飞三阳开泰祝福语结婚对应...
美团联名卡审核成功待激活(美团... 今天百科达人给各位分享美团联名卡审核成功待激活的知识,其中也会对美团联名卡审核未通过进行解释,如果能...
四分五裂是什么生肖什么动物(四... 本篇文章极速百科小编给大家谈谈四分五裂是什么生肖什么动物,以及四分五裂打一生肖是什么对应的知识点,希...