数据分析-2.numpy库

本文详细介绍了Python数据分析库NumPy,包括NumPy的基础知识、数组创建、索引和切片、数组操作、文件操作、NAN和INF值处理等内容。NumPy提供了强大的多维数组对象和丰富的数学函数,适用于高效处理数值型数据,是数据分析和机器学习领域的基础工具。
摘要由CSDN通过智能技术生成

一:NumPy介绍

NumPy是一个功能强大的Python库,主要用于对多维数组执行计算。NumPy这个词来源于两个单词-- Numerical和Python。NumPy提供了大量的库函数和操作,可以帮助程序员轻松地进行数值计算。在数据分析和机器学习领域被广泛使用。他有以下几个特点:

  • numpy内置了并行运算功能,当系统有多个核心时,做某种计算时,numpy会自动做并行计算。
  • Numpy底层使用C语言编写,内部解除了GIL(全局解释器锁),其对数组的操作速度不受Python解释器的限制,效率远高于纯Python代码。
  • 有一个强大的N维数组对象Array(一种类似于列表的东西)。
  • 实用的线性代数、傅里叶变换和随机数生成函数。
    总而言之,他是一个非常高效的用于处理数值型运算的包。

二:Numpy入门

1. 基础知识

因为数组中只能存储同一种数据类型,因此可以通过dtype获取数组中的元素的数据类型。以下是ndarray.dtype的常用的数据类型:

数据类型	  描述	                                                      唯一标识符
bool	  用一个字节存储的布尔类型(True或False)	   						'b'
int8	  一个字节大小,-128 至 127										'i1'
int16	  整数,16 位整数(-32768 ~ 32767)								'i2'
int32	  整数,32 位整数(-2147483648 ~ 2147483647)						'i4'
int64	  整数,64 位整数(-9223372036854775808 ~ 9223372036854775807)	'i8'
uint8	  无符号整数,0 至 255 											'u1'
uint16	  无符号整数,0 至 65535	 										'u2'
uint32	  无符号整数,0 至 2 ** 32 - 1									'u4'
uint64	  无符号整数,0 至 2 ** 64 - 1									'u8'
float16	  半精度浮点数:16位,正负号1位,指数5位,精度10位					'f2'
float32	  单精度浮点数:32位,正负号1位,指数8位,精度23位					'f4'
float64	  双精度浮点数:64位,正负号1位,指数11位,精度52位				'f8'
complex64 复数,分别用两个32位浮点数表示实部和虚部						'c8'
complex128复数,分别用两个64位浮点数表示实部和虚部						'c16'
object_	  python对象													'O'
string_	  字符串														'S'
unicode_  unicode类型													'U'
  • 默认的数据类型:

    import numpy as np
    a1 = np.array([1,2,3])
    print(a1.dtype)
    # 如果是windows系统,默认是int32
    # 如果是mac或者linux系统,则根据系统来
    
  • 以下修改dtype(astype)

    import numpy as np
    a1 = np.array([1,2,3])
    print(a1.dtype) # window系统下默认是int32
    # 以下修改dtype
    a2 = a1.astype(np.int64) # astype不会修改数组本身,而是会将修改后的结果返回
    print(a2.dtype)
    
  • 指定dtype:

    import numpy as np
    a1 = np.array([1,2,3],dtype=np.int64)
    或者 a1 = np.array([1,2,3],dtype="i8")
    print(a1.dtype)
    
  • ndarray.ndim - 数组的轴(维度)的个数。在Python世界中,维度的数量被称为rank。

    # ndarray.ndim: 查看数组的维数
    b1 = np.array([[1, 5, 9], [8, 7, 6]])
    print(b1.ndim)  # 2
    
  • shape 数组的维度。这是一个整数的元组,表示每个维度中数组的大小。对于有 n 行和 m 列的矩阵,shape 将是 (n,m)。因此,shape 元组的长度就是rank或维度的个数 ndim。

    b1 = np.array([[1, 5, 9], [8, 7, 6]])
    print(b1.shape)  # (2, 3) 表示二行三列,并且看元祖里面有几个数,那就是几维数组
    
  • reshape

    重新修改数组的维数

    b3 = np.array([[[1, 2, 3], [4, 5, 6]], [[7, 8, 9], [10, 11, 12]]])  # 三维数组
    print(b3)
    """
    [[[ 1  2  3]
      [ 4  5  6]]
    
     [[ 7  8  9]
      [10 11 12]]]
    """
    print(b3.reshape((2, 6)))
    """
    [[ 1  2  3  4  5  6]
     [ 7  8  9 10 11 12]]
    """
    
  • ndarray.size - 数组元素的总数。这等于 shape 的元素的乘积。

    b1 = np.array([[1, 5, 9], [8, 7, 6]])  # 这个是个二维数组,可以看它的最外层有几个括号"[]", 这个数组外面有两个括号,所以它就是二维数组
    print(b1.size)  # 6, 因为上面数据有6个
    

2 .数组创建

(1)array函数

你可以使用array函数从常规Python列表或元组中创建数组。得到的数组的类型是从Python列表中元素的类型推导出来的。

# 1.通过array来创建数组
a = np.array([0, 1, 2, 6, 10])  # 参数为一个列表
print(a)  # [ 0  1  2  6 10]

(2)通过arange创建

  • 创建一维数组

    b = np.arange(1, 10)
    print(b)  # [1 2 3 4 5 6 7 8 9]
    b = np.arange(1, 10, 2)  # 和range一样,第一个为起始位置,第二个位结束位置,第三个位置为步长
    print(b)  # [1 3 5 7 9]
    
  • 创建二维数组

    a = np.arange(9).reshape(3, 3)
    print(a)
    """
    [[0 1 2]
     [3 4 5]
     [6 7 8]]
    """
    

    注意:arange创建的一维数组,里面的数字个数得和reshape的一样

(3)通过random创建

  • 一维

    c = np.random.random(10
  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值