Python常用库_01—Numpy

什么是Numpy

NumPy(Numerical Python) 是 Python 语言的一个扩展程序库,支持大量的维度数组与矩阵运算,此外也针对数组运算提供大量的数学函数库。
NumPy(Numeric Python)提供了许多高级的数值编程工具,如:矩阵数据类型、矢量处理,以及精密的运算库。
NumPy 是一个运行速度非常快的数学库,主要用于数组计算,包含:

  • 一个强大的N维数组对象 ndarray
  • 广播功能函数
  • 整合 C/C++/Fortran 代码的工具
  • 线性代数、傅里叶变换、随机数生成等功能

下面介绍有关Numpy对数据处理的方式。

1. 读取数据

先介绍一下NumPy—Ndarray 对象,它是一个n维的数组对象。
创建一个 ndarray 只需调用 NumPy 的 array 函数即可:

numpy.array(object, dtype = None, copy = True, order = None, subok = False, ndmin = 0)

参数描述

名称描述
object数组或嵌套的数列
dtype数组元素的数据类型,可选
copy对象是否需要复制,可选
order创建数组的样式,C为行方向,F为列方向,A为任意方向(默认)
subok默认返回一个与基类类型一致的数组
ndmin指定生成数组的最小维度

接下来是关于array的具体使用

# 导入numpy包
import numpy

# array必须是相同的数据类型
numbers = numpy.array([1, 2, 3, 4])
# 若是array中修改了一个数据,则其它数据在输出时也会发生相应的改变
numbers1 = numpy.array(['1', 2, 3, 4])
print(numbers)
# 查看输出数据的类型
print(numbers.dtype)

print(numbers1)
# 查看输出数据的类型
print(numbers1.dtype)

运行结果:
在这里插入图片描述
上图中<U1表示的是字符串类型,可以看出array中所有数据类型都是一致的

读取txt文件

# dtype指定要导入文件的类型,dtype=str / int等等
# delimiter文件中不同元素间的间隔方式,空格还是逗号什么的,如:delimiter=',';
# skip_header是否跳过开头行,一般第一行为类别,为0不跳过,为1或者2则跳过前面1或者2行
world_alcohol = numpy.genfromtxt("world_alcohol.txt", delimiter=",",
                                 dtype=str, skip_header=1)
print(type(world_alcohol))
print(world_alcohol)
# print(help(numpy.genfromtxt))
# 读取特定的数据,编写代码时,计数都从0开始
# 读取第2行第5列数据
uruguay_other_1986 = world_alcohol[1, 4]
# 读取第3行第3列数据
third_country = world_alcohol[2, 2]
print(uruguay_other_1986)
print(third_country)

运行结果:
在这里插入图片描述
切片,截取数据

vector = numpy.array([5, 10, 15, 20])
# 正向截取
print(vector[:])
# 反向截取
print(vector[::-1])

运行结果:
在这里插入图片描述
取矩阵中指定列或行的数

matrix = numpy.array([[5, 10, 15],
                      [20, 25, 30],
                      [35, 40, 45]])
# 取所有行的第2列
print(matrix[:, 1])
print('-------------------------')
# 取所有行的前两列
print(matrix[:, 0:2])
print('-------------------------')
# 取后两行的前两列
print(matrix[1:, 0:2])

运行结果:
在这里插入图片描述
判断数据是否存在矩阵中

matrix = numpy.array([[5, 10, 15],
                      [20, 25, 30],
                      [35, 40, 45]])
# 与每一行的第2列对比,查看是否有25
second_column_25 = (matrix[:, 1] == 25)
print(second_column_25)
# 输出含有数字25的那一行的所有数据
print(matrix[second_column_25, :])

运行结果:
在这里插入图片描述
从上图我们可以看出,当所查找的数据不在矩阵中控制台输出False,反之输出True
还能利用判断符"&","|"等进行综合判断

数据类型的转换

# 利用ndarray.astype()修改array里的数据类型
vector = numpy.array(["1", "2", "3"])
print(vector.dtype)
print(vector)
vector = vector.astype(int)
print(vector.dtype)
print(vector)

运行结果:
在这里插入图片描述
数据的行列求和

matrix = numpy.array([[5, 10, 15],
                      [20, 25, 30],
                      [35, 40, 45]])
# 每行求和
print(matrix.sum(axis=1))
# 每列求和
print(matrix.sum(axis=0))

运行结果:
在这里插入图片描述
数据的数学运算

import numpy as np
a = np.array([20, 30, 40, 50])
b = np.arange(4)
print("b=",b)
c = a - b
print("c=",c)
c = c - 1
print("c=",c)
print("b ** 2=",b ** 2)
print(a < 35)

运行结果:
在这里插入图片描述
矩阵的拼接

a = np.floor(10 * np.random.random((2, 2)))
b = np.floor(10 * np.random.random((2, 2)))
print(a)
print("------")
print(b)
print("------")
# 行拼接
print(np.hstack((a, b)))
print("------")
# 列拼接
print(np.vstack((a, b)))

运行结果:
在这里插入图片描述
矩阵的切分

a = np.floor(10 * np.random.random((2, 12)))
print(a)
print("------")
# 按行切分,分成3个矩阵
print(np.hsplit(a, 3))
print("------")
# 在第3列与第4列进行切分
print(np.hsplit(a, (3, 4)))
a = np.floor(10 * np.random.random((12, 2)))
print("------")
print(a)
print("------")
# 按列切分
print(np.vsplit(a, 3))

运行结果:
在这里插入图片描述在这里插入图片描述
矩阵的扩展

a = np.arange(0, 40, 10)
print(a)
# tile作用:对a进行扩展,使其变为两行两列的矩阵
b = np.tile(a, (2, 2))
print(b)

运行结果:
在这里插入图片描述
排序

a = np.array([[4, 3, 5], [1, 2, 1]])
print(a)
print("--------")
# 对a矩阵的行维度(axis=1)进行排序
b = np.sort(a, axis=1)
print(b)
a.sort(axis=1)
print("--------")
print(a)
a = np.array([4, 3, 1, 2])
# 求出最小值的索引
j = np.argsort(a)
print("--------")
print(j)
print("--------")
# 按从小到大的顺序输出索引值
print(a[j])

运行结果:
在这里插入图片描述
以上是Numpy对数据处理的一些基本的操作,若有需要可以查看该文档http://www.runoob.com/numpy/numpy-tutorial.html
除了Numpy,Pandas也可以对处理数据,会在下一章中详细介绍

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值