python里面的numpy

server/2025/2/28 12:26:39/

NumPy(Numerical Python)是 Python 中用于科学计算的基础库,它提供了高性能的多维数组对象(ndarray)以及处理这些数组的各种工具。以下是对 NumPy 常见用法的详细讲解:

1. 安装与导入

在使用 NumPy 之前,需要先安装它。如果你使用的是 Anaconda 环境,NumPy 已经默认安装;如果是普通 Python 环境,可以使用 pip 进行安装:

pip install numpy

安装完成后,在 Python 代码中导入 NumPy:

python">import numpy as np

通常使用 np 作为 NumPy 的别名,这是一种约定俗成的做法。

2. 创建数组

从列表创建数组

可以使用 np.array() 函数将 Python 列表转换为 NumPy 数组。

python">import numpy as np# 创建一维数组
list1 = [1, 2, 3, 4, 5]
arr1 = np.array(list1)
print(arr1)  # 输出: [1 2 3 4 5]# 创建二维数组
list2 = [[1, 2, 3], [4, 5, 6]]
arr2 = np.array(list2)
print(arr2)
# 输出:
# [[1 2 3]
#  [4 5 6]]
使用内置函数创建数组
  • np.zeros():创建指定形状的全零数组。
python">zeros_arr = np.zeros((3, 4))
print(zeros_arr)
# 输出:
# [[0. 0. 0. 0.]
#  [0. 0. 0. 0.]
#  [0. 0. 0. 0.]]
  • np.ones():创建指定形状的全一数组。
python">ones_arr = np.ones((2, 3))
print(ones_arr)
# 输出:
# [[1. 1. 1.]
#  [1. 1. 1.]]
  • np.arange():类似于 Python 的 range() 函数,创建一个等差数列数组。
python">arange_arr = np.arange(0, 10, 2)
print(arange_arr)  # 输出: [0 2 4 6 8]
  • np.linspace():创建一个在指定区间内均匀分布的数组。
python">linspace_arr = np.linspace(0, 1, 5)
print(linspace_arr)  # 输出: [0.   0.25 0.5  0.75 1.  ]

3. 数组的属性

  • shape:返回数组的形状。
python">arr = np.array([[1, 2, 3], [4, 5, 6]])
print(arr.shape)  # 输出: (2, 3)
  • dtype:返回数组中元素的数据类型。
python">print(arr.dtype)  # 输出: int64
  • ndim:返回数组的维度。
python">print(arr.ndim)  # 输出: 2

4. 数组的索引和切片

一维数组
python">arr = np.arange(10)
print(arr[3])  # 输出: 3
print(arr[2:5])  # 输出: [2 3 4]
二维数组
python">arr = np.array([[1, 2, 3], [4, 5, 6], [7, 8, 9]])
print(arr[1, 2])  # 输出: 6
print(arr[0:2, 1:3])
# 输出:
# [[2 3]
#  [5 6]]

arr[0:2, 1:3] 具体含义:

  • 行切片 0:2
    • 切片操作中的第一个参数 0:2 用于指定行的选取范围。在 Python 的切片语法里,冒号 : 前面的数字表示起始索引(包含该索引对应的元素),冒号后面的数字表示结束索引(不包含该索引对应的元素)。
    • 所以 0:2 表示从第 0 行开始(索引从 0 开始计数),到第 2 行之前结束,即选取第 0 行和第 1 行。
  • 列切片 1:3
    • 切片操作中的第二个参数 1:3 用于指定列的选取范围。同样根据 Python 切片语法,1:3 表示从第 1 列开始(从0开始算),到第 3 列之前结束,即选取第 1 列和第 2 列。

5. 数组的运算

算术运算

NumPy 数组支持基本的算术运算,这些运算会逐元素进行。

python">arr1 = np.array([1, 2, 3])
arr2 = np.array([4, 5, 6])
print(arr1 + arr2)  # 输出: [5 7 9]
print(arr1 * arr2)  # 输出: [4 10 18]
矩阵运算

使用 np.dot() 函数进行矩阵乘法。

python">arr1 = np.array([[1, 2], [3, 4]])
arr2 = np.array([[5, 6], [7, 8]])
result = np.dot(arr1, arr2)
print(result)
# 输出:
# [[19 22]
#  [43 50]]

6. 数组的统计函数

  • np.sum():计算数组元素的总和。
python">arr = np.array([1, 2, 3, 4, 5])
print(np.sum(arr))  # 输出: 15
  • np.mean():计算数组元素的平均值。
python">print(np.mean(arr))  # 输出: 3.0
  • np.max()np.min():分别返回数组中的最大值和最小值。
python">print(np.max(arr))  # 输出: 5
print(np.min(arr))  # 输出: 1

7. 数组的形状操作

  • reshape():改变数组的形状。
python">arr = np.arange(12)
new_arr = arr.reshape(3, 4)
print(new_arr)
# 输出:
# [[ 0  1  2  3]
#  [ 4  5  6  7]
#  [ 8  9 10 11]]
  • flatten()ravel():将多维数组转换为一维数组。
python">print(new_arr.flatten())  # 输出: [ 0  1  2  3  4  5  6  7  8  9 10 11]

以上是 NumPy 的一些常见用法,NumPy 还有很多其他强大的功能,如随机数生成、线性代数运算等,可以根据具体需求进一步学习。


http://www.ppmy.cn/server/171291.html

相关文章

C++性能优化常用技巧

一. 选择合适的数据结构 1.1 map与unordered_map的选择 如果仅仅只需要使用到快速查找的特性,那么unordered_map更加合适,他的复杂度是O(1)。如果还需要排序以及范围查找的能力,那么就选择map。 1.2 vector与list的选择 通常情况下&#…

常用的 Web API

1. Intersection API Interserction API 是一种用于异步检测模板元素月视口(或者指定父元素)交叉状态变化的浏览器原生接口,主要那个用于解决传统滚动监听性能差、实现复杂的问题,适用于懒加载、慢点曝光、无线滚动等场景。 2. …

游戏引擎学习第122天

仓库:https://gitee.com/mrxiao_com/2d_game_3 讨论了多线程(Multithreading) 今天开始讨论的话题对大家来说不太好,因为这是一个相对棘手的技术问题,虽然它很重要。这个话题不像优化那样是通过解决一个问题并进一步精细化来变得…

SpringBoot 整合mongoDB并自定义连接池,实现多数据源配置

要想在同一个springboot项目中使用多个数据源,最主要是每个数据源都有自己的mongoTemplate和MongoDbFactory。mongoTemplate和MongoDbFactory是负责对数据源进行交互的并管理链接的。 spring提供了一个注解EnableMongoRepositories 用来注释在某些路径下的MongoRepo…

excel单、双字节字符转换函数(中英文输入法符号转换)

在Excel中通常使用函数WIDECHAR和ASC来实现单、双字节字符之间的转换。其中 WIDECHAR函数将所有的字符转换为双字节,ASC函数将所有的字符转换为单字节 首先来解释一下单双字节的含义。单字节一般对应英文输入法的输入,如英文字母,英文输入法…

Linux中子线程会继承父线程对相关变量的可见性

在 Linux 的 POSIX 线程模型中,当父线程修改全局变量后创建子线程,子线程一定会看到修改后的最新值。这是由线程的内存共享机制和线程创建时序保证的,具体原理如下: 关键机制解析 内存共享本质: 所有线程共享相同的全局数据段修改操作直接作用于物理内存,无副本存在cint …

html css js网页制作成品——HTML+CSS甜品店网页设计(5页)附源码

目录 一、👨‍🎓网站题目 二、✍️网站描述 三、📚网站介绍 四、🌐网站效果 五、🪓 代码实现 🧱HTML 六、🥇 如何让学习不再盲目 七、🎁更多干货 一、👨‍&#x1f…

ubuntu配置jmeter

1.前提准备 系统 ubuntu server 22.04 前提条件:服务器更新apt与安装lrzsz:更新apt: sudo apt update安装lrzsz: 命令行下的上传下载文件工具 sudo apt install lrzszsudo apt install zip2.安装jemeter 2.1.下载jdk17 输入命令&#xf…