NumPy的使用一

一、关于NumPy的介绍:

​ NumPy是Numerical Python的缩写,是python数值计算的基石。它提供多种数据结构、算法以及大部分涉及Python数值计算所需的接口。NumPy还包括其他内容:

  • 快速、高效的多维数组对象ndarray
  • 基于元素的数组计算或数组间数学操作函数
  • 用于读写硬盘中基于数组的数据集的工具
  • 线性代数操作、傅立叶变换以及随机数生成
  • 成熟的C语言API,允许Python拓展和本地的C或C++代码访问NumPy的数据结构和计算设施

​ 除了NumPy赋予Python的快速数组处理能力以外,NumPy的另外一个主要的用途在算法和库之间作为数据传递的数据容器。对于数据数据,NumPy数组能够比Python内建数据结构更高效地存储和操作数据。此外,用底层语言编写的库,例如用C或Fortran编写的库,可以在NumPy数组存储的数据结构的数据上直接操作,而无须将数据复制到其他内存中后再操作。因此,许多Python的数值计算工具将NumPy数组作为基础数据结构,或与NumPy进行无缝互操作。

​ NumPy大多数被应用在数据分析上,能够对数据做一些处理,比如:数据处理、清洗、过滤等。除此之外,还可用于数据算法、统计等。

二、多维数组(NumPy ndarray):

​ NumPy的核心特征之一就是N-维数组对象——ndarray。ndarray是Python中一个快速、灵活的大型数据集容器。数据允许你使用类似于标量的操作语法在整块数据上进行数学计算。

1、创建数组

​ 在此之前,我们使用标准的NumPy导入的方式import numpy as np。你当然也可以使用其他的方式导入,然而我还是建议使用标准导入的方式。

​ 创建数组的方式有以下两种,所创建的数组维度是有区别的。

第一种方式:使用array函数。array函数接收任意的序列型对象(当然包括数组),生成一个新的包含传递数据的NumPy数组。例如:

# 使用NumPy的标准导入方式导入numpy库
import numpy as np 


# 创建数组方式一:使用array函数
my_list1 = [1, 2, 3, 4, 5, 6]
my_data1 = np.array(my_list1)
my_data1

# 运行结果:
# array([1, 2, 3, 4, 5, 6])

嵌套序列,例如等长度的嵌套列表,将自动转换成多位数组:

# 使用NumPy的标准导入方式导入numpy库
import numpy as np 


# 创建数组方式一:使用array函数,传入嵌套序列
my_list2 =[ [1, 2, 3, 4, 5, 6], [7, 8, 9, 10, 11, 12]]
my_data2 = np.array(my_list2)
my_data2

# 运行结果:
# array([[ 1,  2,  3,  4,  5,  6],
#        [ 7,  8,  9, 10, 11, 12]])

第二种方式:利用np.arange创建,返回一个数组结果,使用该方法只能创建一维数组,但是我们可是使用reshape方法将其转化为多维数组。

# 使用NumPy的标准导入方式导入numpy库
import numpy as np 


# 创建数组方式二:利用np.arange创建
data = np.arange(10)
data

# 运行结果:
# array([0, 1, 2, 3, 4, 5, 6, 7, 8, 9])

# 通过reshape变形其排列方式,转化为多位数组
data = np.arange(10).reshape(3,3)

# 运行结果:
# array([[0, 1, 2, 3, 4],
#        [5, 6, 7, 8, 9]])

一般采用 np.arange().reshape() 来创建多维数组,比较方便快捷。在创建时,使用元组或者列表都是可行的,即小括号中括号是没有区别的,都能达到创建数组的目的。

除了np.array,还有很多其他函数可以创建新数组,例如,给定长度及形状后,zeros可以一次性创建全0的数组,ones可以一次性创建全1的数组。empty则可以创建一个没有初始化数值的数组。

# 使用NumPy的标准导入方式导入numpy库
import numpy as np 

# 全0的数组
data1 = np.zeros(10)
data1

# 运行结果:
# array([0., 0., 0., 0., 0., 0., 0., 0., 0., 0.])


# 全1的数组
data2 = np.zeros(10)
data2

# 运行结果:
# array([1., 1., 1., 1., 1., 1., 1., 1., 1., 1.])

# 没有初始值的数组
data3 = np.empty((2, 3, 2))
data3

# 运行结果:
# array([[[0.00000000e+000, 2.00000013e+000],
#         [2.96439388e-323, 0.00000000e+000],
#         [4.57668571e-072, 2.46567317e+179]],
#        [[6.20015184e-091, 1.48575047e-076],
#         [1.26863781e-076, 3.22179210e-057],
#         [3.99910963e+252, 8.57853230e-309]]])

# 指定值的数组
data4 = np.full((2, 3), 2)
data4

# 运行结果:
# array([[2, 2, 2],
#        [2, 2, 2]])

使用np.empty来生成全0的数组并不安全,有时候可能会返回为初始化的垃圾数据。

2、数组常用属性:

shape方法:可用来查看数据的维度信息

# 使用NumPy的标准导入方式导入numpy库
import numpy as np 

data = np.arange(20).reshape(4,5)
# shape方法:可用来查看数据的维度信息
data.shape

# 运行结果:
# (4, 5)

size方法:可以查看数组元素的个数

# 使用NumPy的标准导入方式导入numpy库
import numpy as np 

data = np.arange(20).reshape(4,5)
# size方法:可以查看数组元素的个数
data.size

# 运行结果:
# 20

dtype方法:可以查看数组的数据类型,数据类型的显示会因Ipython版本的不同而有所差异。

# 使用NumPy的标准导入方式导入numpy库
import numpy as np 

data = np.arange(20).reshape(4,5)
# dtype方法:可以查看数组的数据类型,数据类型的显示会因Ipython版本的不同而有所差异。
data.dtype

# 运行结果:
# dtype('int64')
数据类型:

NumPy中默认的数据类型是float64。

下面是numpy支持的数据类型:

bool 用一位存储的布尔类型(值为 TRUE 或 FALSE )

inti 由所在平台决定其精度的整数(一般为 int32 或 int64 )

int8 整数,范围为128至127

int16 整数,范围为-32768至32767

int32 整数,范围为-2^31 至2^31-1

int64 整数,范围为-2^63 至2^63-1

uint8 无符号整数,范围为0至255

uint16 无符号整数,范围为0至65535

uint32 无符号整数,范围为0至2^32-1

uint64 无符号整数,范围为0至2^64 -1

float16 半精度浮点数(16位):其中用1位表示正负号,5位表示指数,10位表示尾数

float32 单精度浮点数(32位):其中用1位表示正负号,8位表示指数,23位表示尾数

float64 或 float 双精度浮点数(64位):其中用1位表示正负号,11位表示指数,52位表示尾数

complex64 复数,分别用两个32位浮点数表示实部和虚部

complex128 或 complex 复数,分别用两个64位浮点数表示实部和虚部

在创建数组时,我们可以自己设定数组数据类型,如果不设定,Numpy会根据所创建得内容自行判断数据类型。例如:

# 使用NumPy的标准导入方式导入numpy库
import numpy as np 

data = np.arange(20).reshape(4,5)
data.dtype

# 运行结果:
# dtype('int64')

创建数组时设定numpy指定的数据类型,只需设定参数 dtype='数据类型',通常如果没有特别要求或者对数据的存储类型不限定时,不用特别强调数据类型。

# 使用NumPy的标准导入方式导入numpy库
import numpy as np 

data = np.arange(20, dtype='int32').reshape(4,5) # 设定参数 dtype='数据类型'
data.dtype

# 运行结果:
# dtype('int32')

数组的数据类型之间是可以转换的,可以使用以下两种方法:

# 使用NumPy的标准导入方式导入numpy库
import numpy as np 

# 方式一:
data = np.arange(20, dtype='int32').reshape(4,5)
data.dtype

# 运行结果:
# dtype('int32')

# 方式二:
data1 = np.arange(20, dtype='int32').reshape(4,5)
data1.dtype = 'float64'
data1.dtype

# 运行结果:
# dtype('float32')

你可能感兴趣的:(NumPy的使用一)