数据分析 — Numpy 数组处理

这篇具有很好参考价值的文章主要介绍了数据分析 — Numpy 数组处理。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

一、简介

1、概念

NumPy(Numerical Python)是一个用于科学计算的 Python 库,提供了多维数组对象(ndarray)以及数学函数,用于处理大规模数据集和执行数值计算。

2、优点

当数据量达到一定级别后,NumPy 计算会比原生 Python 快。

import time
start_time = time.time()
numbers = list(range(1, 1000001))
total = sum(numbers)
end_time = time.time()
print("原生 Python 计算100万个元素的和耗时:", end_time - start_time)
import time
import numpy as np
start_time = time.time()
numbers = np.arange(1, 1000001)
total = np.sum(numbers)
end_time = time.time()
print("NumPy 计算100万个元素的和耗时:", end_time - start_time)

3、特点

Numpy 的主要对象是同种元素的多维数组。这是⼀个所有的元素都是⼀种类型、通过⼀个正整数元组索引的元素表格(通常是元素是数字)。在 Numpy 中维度(dimensions)叫做轴(axes),轴的个数叫做秩(rank)。

NumPy 数组是⼀个多维数组对象,称为 ndarray。由两部分组成:实际的数据描述这些数据的元数据

4、作用

可以构造⼀个比普通列表大的多的数组,并且可以很灵活的对其中所有的元素进行并行化操作。

5、引用

pip install numpy
import numpy as np # 导入 NumPy 库并使用别名 np

二、创建数组

1、创建一维数组

一维数组是最简单的数组形式,也被称为向量,它只有一个维度,即行(或列)。

一维数组类似于 Python 中的列表,但它可以包含相同类型的数据元素。

一维数组在数学和计算中常用于表示一系列数据点或向量。

创建方式

  • 直接传入列表的方式
import numpy as np  # 导入 NumPy 库并使用别名 np
arr1 = np.array([1, 2, 3, 4, 5])
print(arr1)  # [1 2 3 4 5]
  • 传入 range 生成序列
import numpy as np  # 导入 NumPy 库并使用别名 np
arr2 = np.array(range(1, 6))
print(arr2)  # [1 2 3 4 5]
  • 使用 numpy 自带的 np.arange() 生成数组
import numpy as np  # 导入 NumPy 库并使用别名 np
# np.arange(起始索引,结束索引,步长)
arr3 = np.arange(1, 6, 2)
print(arr3)  # [1 3 5]
  • 使用 np.linspace() 生成等间隔的数组
import numpy as np  # 导入 NumPy 库并使用别名 np
# np.linspace(起始索引,结束索引,步长)
arr4 = np.linspace(1, 5, num=5)
print(arr4)  # [1. 2. 3. 4. 5.]

3、创建二维数组

  • 二维数组是具有两个维度的数据结构,通常表示矩阵。
  • 第一个维度表示行数,第二个维度表示列数。
  • 二维数组在数学和计算中用于表示表格数据、图像、矩阵等多种数据结构。
import numpy as np  # 导入 NumPy 库并使用别名 np
# 创建包含2行3列的二维数组
arr = np.array([[1, 2, 3], [4, 5, 6]])
print(arr)
# [[1 2 3]
#  [4 5 6]]

# 创建一个2x3的二维数组,其中每个元素都是0
arr = np.array([[0, 0, 0], [0, 0, 0]])
print(arr)
# [[0 0 0]
#  [0 0 0]]

# 创建一个2x3的全0二维数组
arr = np.zeros((2, 3))
print(arr)
# [[0. 0. 0.]
#  [0. 0. 0.]]

# 创建一个2x3的全1二维数组
arr = np.ones((2, 3))
print(arr)
# [[1. 1. 1.]
#  [1. 1. 1.]]

# 创建一个2x2的单位矩阵
arr = np.eye(2)
print(arr)
# [[1. 0.]
#  [0. 1.]]

三、属性和数组运算

1、基本属性

  • 元素个数:size
  • 元素类型:dtype
  • 元素字节大小:itemsize
  • 秩:ndim
  • 维度:shape
  • 元素缓冲区:data
import numpy as np  # 导入 NumPy 库并使用别名 np
arr = np.array([1, 2, 3, 4, 5])
print(arr)  # [1 2 3 4 5]

size = arr.size
print(size)  # 5

dtype = arr.dtype
print(dtype)  # int32

itemsize = arr.itemsize
print(itemsize)  # 4

dim = arr.ndim
print(dim)  # 1

shape = arr.shape
print(shape)  # (5,)

data = arr.data
print(data)  # <memory at 0x0000029E7F205C00>

2、数据类型

NumPy 支持多种数据类型,如整数、浮点数、布尔值等。可以使用 dtype 参数指定数据类型。

类型 说明
bool 用一个字节存储的布尔类型(True 或 False)
int 由所在平台决定其大小的整数(一般为 int32 或 int64)
int8 一个字节大小的整数,范围为 -128 到 127
int16 两个字节大小的整数,范围为 -32768 到 32767
int32 四个字节大小的整数,范围为 -2^31 到 2^32-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 位浮点数表示实部和虚部
import numpy as np  # 导入 NumPy 库并使用别名 np
# 创建指定数据类型的数组
arr = np.array([1, 2, 3], dtype=np.float32)
print(arr)  # [1. 2. 3.]

3、数组运算

import numpy as np  # 导入 NumPy 库并使用别名 np
arr = np.array([[1, 2, 3], [4, 5, 6]])
print(arr)
# [[1 2 3]
#  [4 5 6]]
print(arr + arr)
# [[ 2  4  6]
#  [ 8 10 12]]
print(arr - arr)
# [[0 0 0]
#  [0 0 0]]
print(arr * arr)
# [[ 1  4  9]
#  [16 25 36]]
print(arr / arr)
# [[1. 1. 1.]
#  [1. 1. 1.]]

广播机制

import numpy as np  # 导入 NumPy 库并使用别名 np
arr = np.array([[1, 2, 3], [4, 5, 6]])
print(1 / arr)
# [[1.         0.5        0.33333333]
#  [0.25       0.2        0.16666667]]

四、索引和切片

1、基本索引

import numpy as np  # 导入 NumPy 库并使用别名 np

arr = np.array([1, 2, 3, 4, 5])

# 获取第三个元素
element = arr[2]
print(element)  # 3

2、多维数组索引

import numpy as np  # 导入 NumPy 库并使用别名 np

arr_2d = np.array([[1, 2, 3], [4, 5, 6]])

# 获取第二行第三列的元素
element_2d = arr_2d[1, 2]
print(element_2d)  # 6

3、基本切片

import numpy as np  # 导入 NumPy 库并使用别名 np

arr = np.array([1, 2, 3, 4, 5])

# 获取索引1到3的子数组
arr_slice = arr[1:4]  # 左闭右开
print(arr_slice)  # [2, 3, 4]

4、多维数组切片

import numpy as np  # 导入 NumPy 库并使用别名 np

arr_2d = np.array([[1, 2, 3], [4, 5, 6]])

# 获取所有行的第二列及之后的元素
arr_2d_slice = arr_2d[:, 1:]  # 逗号前是行,逗号后是列,:表示所有
print(arr_2d_slice)
# [[2, 3],
#  [5, 6]]

5、布尔索引

import numpy as np  # 导入 NumPy 库并使用别名 np

arr = np.array([1, 2, 3, 4, 5])

# 返回一个布尔数组,表示大于3的元素
bool_index = arr > 3  
subset_by_bool = arr[bool_index]
print(subset_by_bool)  # [4, 5]

6、花式索引

import numpy as np  # 导入 NumPy 库并使用别名 np

arr = np.array([1, 2, 3, 4, 5])

# 获取索引为第0,2,4的子数组
indices = np.array([0, 2, 4])
fancy_indexing = arr[indices]
print(fancy_indexing)  # [1, 3, 5]

7、修改元素值

import numpy as np  # 导入 NumPy 库并使用别名 np

arr = np.array([1, 2, 3, 4, 5])

# 将索引1的元素修改为10
arr[1] = 10
print(arr)  # [ 1 10  3  4  5]
import numpy as np  # 导入 NumPy 库并使用别名 np

arr_2d = np.array([[1, 2, 3], [4, 5, 6]])

# 将第一行第二列的元素修改为20
arr_2d[0, 1] = 20
print(arr_2d)
# [[ 1 20  3]
#  [ 4  5  6]]

索引和切片的区别总结:

  • 返回类型: 索引返回的是单个元素值,而切片返回的是数组的一个视图。
  • 是否影响原数组: 对索引得到的元素的修改不会影响原数组,而对切片的修改会影响原数组。
  • 用法: 索引用于获取特定位置的元素,而切片用于获取数组的子集。

五、统计函数

1、均值

import numpy as np  # 导入 NumPy 库并使用别名 np

arr = np.array([1, 2, 3, 4, 5])
mean_value = np.mean(arr)
print(mean_value)  # 3.0

2、中位数

import numpy as np  # 导入 NumPy 库并使用别名 np

arr = np.array([1, 2, 3, 4, 5])
median_value = np.median(arr)
print(median_value)  # 3.0

3、总和

import numpy as np  # 导入 NumPy 库并使用别名 np

arr = np.array([1, 2, 3, 4, 5])
sum_value = np.sum(arr)
print(sum_value)  # 15

4、乘积

import numpy as np  # 导入 NumPy 库并使用别名 np

arr = np.array([1, 2, 3, 4, 5])
product_value = np.prod(arr)
print(product_value)  # 120

5、最小值

import numpy as np  # 导入 NumPy 库并使用别名 np

arr = np.array([1, 2, 3, 4, 5])
min_value = np.min(arr)
print(min_value)  # 1

6、最大值

import numpy as np  # 导入 NumPy 库并使用别名 np

arr = np.array([1, 2, 3, 4, 5])
max_value = np.max(arr)
print(max_value)  # 5

7、标准差

import numpy as np  # 导入 NumPy 库并使用别名 np

arr = np.array([1, 2, 3, 4, 5])
std_deviation = np.std(arr)
print(std_deviation)  # 1.4142135623730951

8、方差

import numpy as np  # 导入 NumPy 库并使用别名 np

arr = np.array([1, 2, 3, 4, 5])
variance = np.var(arr)
print(variance)  # 2.0

9、协方差

import numpy as np  # 导入 NumPy 库并使用别名 np

arr1 = np.array([1, 2, 3, 4, 5])
arr2 = np.array([5, 4, 3, 2, 1])
covariance_matrix = np.cov(arr1, arr2)
print(covariance_matrix)
# [[ 2.5 -2.5]
#  [-2.5  2.5]]

10、百分位数

import numpy as np  # 导入 NumPy 库并使用别名 np

arr = np.array([1, 2, 3, 4, 5])
percentile_50 = np.percentile(arr, 50)
print(percentile_50)  # 3.0

11、直方图

import numpy as np  # 导入 NumPy 库并使用别名 np

arr = np.array([1, 2, 3, 4, 5])
histogram_values, bin_edges = np.histogram(arr, bins=5)
print(histogram_values, bin_edges)  # [1 1 1 1 1] [1.  1.8 2.6 3.4 4.2 5. ]

12、相关系数

import numpy as np  # 导入 NumPy 库并使用别名 np

arr1 = np.array([1, 2, 3, 4, 5])
arr2 = np.array([5, 4, 3, 2, 1])
correlation_matrix = np.corrcoef(arr1, arr2)
print(correlation_matrix)
# [[ 1. -1.]
#  [-1.  1.]]

六、按条件筛选

1、基本用法

import numpy as np  # 导入 NumPy 库并使用别名 np

arr = np.array([1, 2, 3, 4, 5])
indices = np.where(arr > 2)
print(indices)  # (array([2, 3, 4], dtype=int64),)

2、返回满足条件的元素

import numpy as np  # 导入 NumPy 库并使用别名 np

arr = np.array([1, 2, 3, 4, 5])
values = arr[np.where(arr > 2)]
print(values)  # [3 4 5]

3、替换满足条件的元素

import numpy as np  # 导入 NumPy 库并使用别名 np

arr = np.array([1, 2, 3, 4, 5])
arr[np.where(arr > 2)] = 0  # 大于2的返回0
print(arr)  # [1 2 0 0 0]

4、使用三元表达式

import numpy as np  # 导入 NumPy 库并使用别名 np

arr = np.array([1, 2, 3, 4, 5])
new_arr = np.where(arr > 2, 0, arr)  # 大于2的返回0
print(new_arr)  # [1 2 0 0 0]

5、多条件选择

import numpy as np  # 导入 NumPy 库并使用别名 np

arr = np.array([1, 2, 3, 4, 5])
indices = np.where((arr > 2) & (arr < 5))
print(indices)  # (array([2, 3], dtype=int64),)

6、返回满足条件的元素的坐标

import numpy as np  # 导入 NumPy 库并使用别名 np

arr = np.array([[1, 2, 3], [4, 5, 6]])
coordinates = np.where(arr > 2)
print(coordinates)  # (array([0, 1, 1, 1], dtype=int64), array([2, 0, 1, 2], dtype=int64))

arr = np.array([[1, 2, 3], [4, 5, 6]])
coordinates = arr[np.where(arr > 2)]
print(coordinates)  # [3 4 5 6]

记录学习过程,欢迎讨论交流,尊重原创,转载请注明出处~文章来源地址https://www.toymoban.com/news/detail-834865.html

到了这里,关于数据分析 — Numpy 数组处理的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 【数据分析之道-Numpy(八)】numpy统计函数

    ✍ 作者简介: i阿极 ,CSDN Python领域新星创作者, 专注于分享python领域知识。 ✍ 本文录入于《数据分析之道》 ,本专栏针对大学生、初级数据分析工程师精心打造,对python基础知识点逐一击破,不断学习,提升自我。 ✍ 订阅后,可以阅读《数据分析之道》中全部文章内容

    2024年02月06日
    浏览(43)
  • 【数据分析之道-NumPy(四)】numpy广播机制

    ✍ 作者简介: i阿极 ,CSDN Python领域新星创作者, 专注于分享python领域知识。 ✍ 本文录入于《数据分析之道》 ,本专栏针对大学生、初级数据分析工程师精心打造,对python基础知识点逐一击破,不断学习,提升自我。 ✍ 订阅后,可以阅读《数据分析之道》中全部文章内容

    2023年04月19日
    浏览(50)
  • 【数据分析之道-NumPy(三)】numpy切片与索引

    ✍ 作者简介: i阿极 ,CSDN Python领域新星创作者, 专注于分享python领域知识。 ✍ 本文录入于《数据分析之道》 ,本专栏针对大学生、初级数据分析工程师精心打造,对python基础知识点逐一击破,不断学习,提升自我。 ✍ 订阅后,可以阅读《数据分析之道》中全部文章内容

    2023年04月09日
    浏览(48)
  • 【数据分析之道-NumPy(七)】numpy字符串函数

    ✍ 作者简介: i阿极 ,CSDN Python领域新星创作者, 专注于分享python领域知识。 ✍ 本文录入于《数据分析之道》 ,本专栏针对大学生、初级数据分析工程师精心打造,对python基础知识点逐一击破,不断学习,提升自我。 ✍ 订阅后,可以阅读《数据分析之道》中全部文章内容

    2024年02月04日
    浏览(45)
  • 【数据分析 - 基础入门之NumPy⑥】- NumPy案例巩固强化

    大家好!我是初心,本期给大家带来的是 NumPy 案例巩固强化练习题,共17道,亲测。 注:题目素材来自 ——《千锋教育》 本期跟大家分享的就是这些题目了!希望大家可以多多实操练习,加强巩固,以便更好的掌握 NumPy 。 文章直达 链接 上期回顾 【数据分析 - 基础入门之

    2024年02月15日
    浏览(41)
  • 【数据分析 - 基础入门之NumPy④】NumPy基本操作 - 一

    大家好!我是初心,本期给大家带来的是【【NumPy系列】基本操作 - 一。 作者的【 Python 数据分析】专栏正在火热更新中,如果本文对您有帮助,欢迎大家点赞 + 评论 + 收藏 ! 每日金句分享: 选择你所喜欢的,爱你所选择的。』—— 托尔斯泰「托尔斯泰 。 NumPy( Numerical Py

    2024年02月13日
    浏览(71)
  • 【数据分析】numpy (二)

    numpy作为数据分析,深度学习常用的库,本篇博客我们来介绍numpy的一些进阶用法: 一,numpy的常用简单内置函数: 1.1求和: 1.2求平均值: 1.3求最小值: 1.4求最大值: 以下就不再一一列举,我转成表格大家可以去Python手动尝试一下。 np.std() 标准差 np.var() 方差 np.median() 中位

    2024年02月14日
    浏览(41)
  • 【Python数据分析】数据分析之numpy基础

    实验环境:建立在Python3的基础之上 numpy提供了一种数据类型,提供了数据分析的运算基础,安装方式 导入numpy到python项目 本文以案例的方式展示numpy的基本语法,没有介绍语法的细枝末节,笔者认为通过查阅案例就能掌握基本用法。 numpy数组的基本概念 numpy默认所有元素具有

    2024年02月10日
    浏览(47)
  • 【数据分析入门】Numpy进阶

    pandas 是一个功能强大的 Python 数据分析库 ,为 数据处理和分析 提供了高效且灵活的工具。它是在 NumPy 的基础上构建的,为 处理结构化数据(如表格数据) 和 时间序列数据 提供了 丰富的数据结构和数据操作方法 。 pandas 提供了两种主要的数据结构: Series 和 DataFrame 。 S

    2024年02月12日
    浏览(49)
  • 【数据分析入门】Numpy基础

    NumPy 的全称为 Numeric Python,它是 Python 的第三方扩展包,主要用来计算、处理一维或多维数组。   步入8月了,7月时因为项目所需,自学了 深度学习 相关的内容,现在 已经把项目所需要的神经网络框架搭建起来了,输入输出也都归一化了,模拟误差也加上了,图像的参数

    2024年02月13日
    浏览(78)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包