Python NumPy 学习

本文详细介绍了Python科学计算库NumPy的基础和高级用法,包括创建数组、数组形状、数组计算、转置操作、布尔索引、三元运算、裁剪以及常用统计函数和数组特性。NumPy提供了高效处理多维数组的能力,是Python科学计算的核心库。
摘要由CSDN通过智能技术生成

Numpy 提供了一个在 Python 中做科学计算的基础库,重在数值计算,主要用于处理多维数组(矩阵)的库
用来存储和处理大型矩阵,比 Python 自身的嵌套列表结构要高效的多。本身是由C语言开发,是个很基础的扩展,Python其余的科学计算扩展大部分都是以此为基础

高性能科学计算和数据分析的基础包
ndarray,多维数组(矩阵),具有矢量运算能力,快速、节省空间
矩阵运算,无需循环,可完成类似Matlab中的矢量运算
线性代数、随机数生成

一、创建数组的三种方法

import random
import numpy as np
# numpy 用来帮助我们进行数值型计算
# 第一种方法
a = np.array([1,2,3,4,5])
print(a)	# [1 2 3 4 5]
print(type(a))	# <class 'numpy.ndarray'>
# 第二种方法
b = np.array(range(1,6))
print(b)	#[1 2 3 4 5]
print(type(b))	#<class 'numpy.ndarray'>
# 第三种方法
c = np.arange(1,6)
print(c) 	#[1 2 3 4 5]
print(type(c))	#<class 'numpy.ndarray'>
# dtype 查看数组中数据的类型
print(c.dtype)	# int32

# 也可以指定数据类型
d = np.array([1,1,0,1],dtype=bool)
print(d) # [ True  True False  True]

# numpy中含有小数的情况
e = np.array([random.random() for i in range(4)])
print(e)	# [0.17119639 0.10179202 0.6112741  0.3211631 ]
print(type(e))	# <class 'numpy.ndarray'>
print(e.dtype)	# float64

# 指定数组中小数的个数
f = e.round(2)
print(f)	# [0.17 0.1  0.61 0.32]

二、数组的形状

  1. 二维数组
a = np.array([[1,2,3],[4,5,6]])

在这里插入图片描述
2. 三维数组

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

在这里插入图片描述
3. 上面的步骤过于复杂,可以借助 reshape 函数
在这里插入图片描述
在这里插入图片描述
4. 三种方式将 3 维数组 f ,转成 1 维数组
在这里插入图片描述

三、数组的计算

  1. 将数组中的所有元素 + 2
    在这里插入图片描述
  2. 运行 b/0 并不会报错,其中 nan (not a number) 代表未定义或不可表示的值,inf (infimum) 表示无穷
    在这里插入图片描述
  3. 两个相同结构的数组的运算
    在这里插入图片描述
因为行的维度两个数组是相同的,所以会对每一行进行+——*/运算
多维中有一个(或以上)维度相同的话就可以进行计算
所有维度都不相同,无法进行计算

四、转置操作

转置的三种操作方法

a = np.arange(12)
b = a.reshape((3,4))

print(b.T)

print(b.transpose())
# 交换 0 轴和 1 轴
print(b.swapaxes(1,0))

在这里插入图片描述

五、取行/列

# b 是一个二维数组
[[ 0  1  2  3]
 [ 4  5  6  7]
 [ 8  9 10 11]]
 
# 取第 3 行
print(b[2])
[ 8  9 10 11]

# 取连续的多行
print(b[1:4])
[[ 4  5  6  7]
 [ 8  9 10 11]]

# 取不连续的多行(1,3行)
print(b[[0,2]])
[[ 0  1  2  3]
 [ 8  9 10 11]]

# 取第 2 列
print(b[:,1])
[1 5 9]

# 取连续的多列(1~3列)
print(b[:,0:2])
[[ 0  1  2]
 [ 4  5  6]
 [ 8  9 10]]

# 取不连续的多列(1,3列)
print(b[:,[0,2]])
[[ 0  2]
 [ 4  6]
 [ 8 10]]

# 取单个数,处于第二行第三列的数
print(b[2,3])
11

# 取多个数
print(b[2:5,1:4])
[[ 9 10 11]]
print(b[1,2],b[2,3])
6 11

六、布尔索引、三元运算、裁剪

  1. 布尔索引
    在这里插入图片描述
  2. 三元运算
    将 b 中小于 4 的置为 0 ,大于等于 4 的置为 10
    在这里插入图片描述
  3. 裁剪
    将 b 中 小于 6 的置为 6,大于 9 的置为 9
    在这里插入图片描述

七、其他扩展

  1. 常用统计函数
求和:t.sum(axis=None)

均值:t.mean(a,axis=None) 受离群点的影响较大

中值:np.median(t,axis=None)

最大值:t.max(axis=None)

最小值:t.min(axis=None)

极值:np.ptp(t,axis=None) 即最大值和最小值只差

标准差:t.std(axis=None)
  1. 常用的数组
创建一个全0的数组: np.zeros((3,4))
创建一个全1的数组: np.ones((3,4))
创建一个对角线为1的正方形数组(方阵):np.eye(3) 
  1. numpy 中的 copy 和 view
a = b 完全不复制,a和b相互影响
a = b[:],视图的操作,一种切片,会创建新的对象a,但是a的数据完全由b保管,他们两个的数据变化是一致的,
a = b.copy(),复制,a和b互不影响

  1. 在这里插入图片描述
    在这里插入图片描述
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值