NumPy 数值运算基础

本文详细介绍了Numpy,一个Python基础库,涵盖了创建数组、随机数生成、数组变换(包括重塑、合并、分割和转置)、索引和切片、向量化运算、条件逻辑运算以及数据统计与分析,如排序、去重和常用统计函数。
摘要由CSDN通过智能技术生成

     Numpy 是一个开源的 Python 科学计算库,它是 python 科学计算库的基础库,许多其他著名的库(如 Pandas 、Scikit-learn 等)都要用到 Numpy 库的一些功能。Numpy 常用的导入格式:import numpy as np

1. 创建数组对象

    NumPy 库能将数据(列表、元组、数组或其他序列类型)转换为 ndarray 数组。

  1. 利用 array 函数创建数组对象
  2. 专门创建数组的函数

  • NumPy 创建的 ndarray 对象属性,主要有 shape 、size 等属性

2. 生成随机数

    在 NumPy.random 模块中,提供了多种随机数的生成函数。如 randint 生成指定范围的随机整数。

np.random.randint(low,high = None,size = None)

3. 生成随机函数

4. 数组变换

4.1 数组重塑

    reshape,与 reshape 相反的方法是数据散开(ravel)或数据扁平化(flatten)

    数据重塑不会改变原来的数

arr1 = np.arange(12)
print('arr1:\n',arr1)
arr1:
 [ 0  1  2  3  4  5  6  7  8  9 10 11]
# a.reshape(m,n)表示将原有数组a转化为一个m行n列的新数组,a自身不变
arr2 = arr1.reshape(3,4)
print('arr2:\n',arr2)
arr2:
 [[ 0  1  2  3]
 [ 4  5  6  7]
 [ 8  9 10 11]]
# reshape(m,n)中参数m或n其中一个可写为"-1",作用为计算机根据原数组中的元素总数自动计算行或列的值
arr3 = arr1.reshape(2,-1)
print(arr3)
[[ 0  1  2  3  4  5]
 [ 6  7  8  9 10 11]]

4.2 数组合并

    完成数组的组合,包括数组的横向组合和纵向组合。

    NumPy 利用 hstack、vstack 和 concatenate 函数完成数组的组合。

  • 横向组合利用 hstack 函数。将 ndarray 对象构成的元组作为参数,传给 hstack 函数
arr1 = np.arange(6).reshape(3,2)
arr2 = arr1 * 2
arr3 = np.hstack((arr1,arr2))
print('横向合并:\n',arr3)
横向合并:
 [[ 0  1  0  2]
 [ 2  3  4  6]
 [ 4  5  8 10]]
  • 纵向组合是利用 vstack 将数组纵向合并。
arr4 = np.vstack((arr1,arr2))
print('纵向合并:\n',arr4)
纵向合并:
 [[ 0  1]
 [ 2  3]
 [ 4  5]
 [ 0  2]
 [ 4  6]
 [ 8 10]]
  • concatenate 函数可以实现数组的横向或纵向合并,参数 axis=1 时进行横向合并,axis=0 时进行纵向合并。

4.3 数组分割

    实现数组的横向、纵向和指定方向的分割

    与数组合并相反,NumPy 提供了 hsplit 、vsplit 和 split 分别实现数组的横向、纵向和指定方向的分割。

arr = np.arange(16).reshape(4,4)
print('横向分割为:\n',np.hsplit(arr,2))
print('纵向分割为:\n',np.vsplit(arr,2))
横向分割为:
 [array([[ 0,  1],
       [ 4,  5],
       [ 8,  9],
       [12, 13]]), array([[ 2,  3],
       [ 6,  7],
       [10, 11],
       [14, 15]])]
纵向分割为:
 [array([[0, 1, 2, 3],
       [4, 5, 6, 7]]), array([[ 8,  9, 10, 11],
       [12, 13, 14, 15]])]
  • 同样,split 在参数 axis=1 时实现数组的横向分割,axis=0 时则进行纵向分割。 

4.4 数组转置和轴对换

    数组转置是数组重塑的一种特殊形式,可以通过 transpose 方法进行转置。transpose 方法需要传入轴编号组成的元组。

  • 除了使用transpose外,可以直接利用数组的T属性进行数组转置。

 5. 数组的索引和切片

一维数组的索引和切片

  • 一维数组的切片和索引与 python 的 list 索引类似

多维数组的索引

  • 对于多维数组,它的每一个维度都有一个索引,各个维度的索引之间用逗号分隔。也可以使用整数函数和布尔值索引访问多维数组。

6. 数组的运算

    数组的运算支持向量化运算,将本来需要在 Python 级别进行的运算,放到 C 语言的运算中,明显地提高了程序的运算速度。

  1. 数组和标量间的运算
  2. ufunc 函数

    常用的 ufunc 函数运算有四则运算、比较运算和逻辑运算。

    np.any 函数表示逻辑 "or",np.all 函数表示逻辑 "and" 。

  • ufunc函数的广播机制

    广播(broadcasting)是指不同形状的数组之间执行算术运算的方式。

7. 条件逻辑运算

    在 NumPy 中可以利用基本的逻辑运算就可以实现数组的条件运算。

    这种方法对大规模数组处理效率不高,也无法用于多维数组。NumPy 提供的 where 方法可以解决这些问题。

# 满足条件(condition),输出x,不满足则输出y
np.where(condition,x,y)    

 8. NumPy 中的数据统计与分析

8.1 排序

numpy.sort(a, axis, kind, order)

    使用 argsort 和 lexsort 函数,可以在给定一个或多个键时,得到一个由整数构成的索引数组,索引值表示数据在新的序列中的位置。

8.2 重复数据与去重

    在数据统计分析中,需要提前将重复数据剔除。在 NumPy 中,可以通过 unique 函数找到数组中的唯一值并返回已排序的结果。

8.3 常用统计函数

    NumPy中提供了很多用于统计分析的函数,常见的有 sum、mean、std、var、min 和 max 等。

    几乎所有的统计函数在针对二维数组的时候需要注意轴的概念。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值