Numpy学习笔记

1 Numpy介绍

1.1 什么是Numpy

Numpy是Python中科学计算的一个基础包。它是一个Python库,提供多维数组对象,各种派生对象(如掩码数组和矩阵),以及用于数组快速操作的各种API,有包括数学、逻辑、形状操作、排序、选择、输入输出、离散傅立叶变换、基本线性代数,基本统计运算和随机模拟等等。
NumPy包的核心是 ndarray 对象。它封装了python原生的同数据类型的 n 维数组,为了保证其性能优良,其中有许多操作都是代码在本地进行编译后执行的。

1.2 Numpy数组与Python之间的区别

  • NumPy 数组在创建时具有固定的大小,与Python的原生数组对象(可以动态增长)不同。更改ndarray的大小将创建一个新数组并删除原来的数组。
  • NumPy 数组中的元素都需要具有相同的数据类型,因此在内存中的大小相同。 例外情况:Python的原生数组里包含了NumPy的对象的时候,这种情况下就允许不同大小元素的数组。
  • NumPy 数组有助于对大量数据进行高级数学和其他类型的操作。通常,这些操作的执行效率更高,比使用Python原生数组的代码更少。
  • 越来越多的基于Python的科学和数学软件包使用NumPy数组; 虽然这些工具通常都支持Python的原生数组作为参数,但它们在处理之前会还是会将输入的数组转换为NumPy的数组,而且也通常输出为NumPy数组。换句话说,为了高效地使用当今科学/数学基于Python的工具(大部分的科学计算工具),你只知道如何使用Python的原生数组类型是不够的 - 还需要知道如何使用 NumPy 数组。

1.3 Numpy特点

运行速度快,性能高。NumPy中当涉及到 ndarray 时,逐个元素的操作是“默认模式”,但逐个元素的操作由预编译的C代码快速执行。以此达到接近c的速度进行运算

2 Numpy数组的创建

首先导入Numpy包

import numpy as np

比较直接的创建方法:

# 通过Python的list来创建
a=[1,2,3,4,5]
b=np.array(a)

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

不是很直接的创建方法:

  1. arange([start,]stop[,stop,dtype=None])
  2. 与reshape(d1,d2,…,dn)互相配合使用
a=np.arange(6) # a=[0,1,2,3,4,5]
a=np.arange(0,6,2) # a=[0,2,4]
a=np.arange(6).reshape(2,3) # a=[[0,1,2],[3,4,5]]

其他常用数组方法
3. ones(shape)
4. ones_like(a)
5. zeros(shape)
6. zeros_like(a)
7. empty(shape)
8. empty_like(a)

a=np.ones((2,3)) # a=[[1,1,1],[1,1,1]]
b=np.ones_like(a) # 顾名思义 像a一样的,但是数据全为1

c=empty((2,3)) # c为两行三列的数组,但里面的数据是随机的

3 对数组的索引

3.1 基础索引

就是通过下标哈哈哈哈哈

a=np.arange(20).reshape(4,5)
"""
a=[
	[0,1,2,3,4],
	[5,6,7,8,9],
	[10,11,12,13,14],
	[15,16,17,18,19]
]
"""
# 比如
a[3] # [15,16,17,18,19]
a[3,1] # 16

a[:2]
"""
[
	[0,1,2,3,4],
	[5,6,7,8,9]
]
"""
a[:2,2:4]
"""
[
	[2,3],
	[7,8]
]
"""

3.2 神奇索引

就很神奇,可以通过给定下标数组查找数组

a=np.arange(10)
index=[0,1,4,8]
a[index] # [0,1,4,8]

3.3 bool索引

就很布尔,通过给定的bool数组将值为True的元素取出

a=np.arange(10)
stats=(a%2==0)||(a>7)
a[stats] # 可以把a中为偶数或者大于7的数筛选出来 [0,2,4,6,8,9]

4 常用随机函数

1 rand(d0,d1,…,dn)
d0,d1,…,dn:维度
返回的数据在(0,1)之间,具有均匀分布
2 randn(d1,d2,…,dn)
返回的数值具有标准正态分布,均值为0,方差为1
3 randint([low,]high[,size,dtye])
生成随机整数[low,high)或者[0,high)
4 random([size])
生成(0.0,1.0)的随机数
5 choice(a[,size,replace,p])
a是一维数组,从其中随机生成结果
6 shuffle(x)
将x进行随机排列,只进行第一维度的排列
7 permutation(x)
把一个数组x进行随机的排列,或者数字的全排列
8 normal(loc,scale,size)
按照平均值loc和方差scale生成高斯分布的数字
9 unform([low,high,size])
[low,high) 中生成均匀分布的数字

5 常用数学计算函数

笔记越来越水了,,,,,,,,应该看得懂吧哈哈哈哈哈哈

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

a+1 # [2,3,4,5]
a+b # [5,5,5,5]

# sum 求和
np.sum(a) # 10 1+2+3+4

# prod 乘积
np.prod(a) # 24 1*2*3*4

# cumsum 累加和
np.cumsum(a) # [1,3,6,10]

# cumprod 累积和
np.cumprod(a) # [1,2,6,24]

# max/min 取最大最小值
#略

# median 取中位数
np.median(a) # 2.5

# mean 取平均值
np.mean(a) # 2.5

# std 标准差
np.std(a) # 1.118033988749895

# var 方差
np.var(a) # 1.25

6 给数组增加维度

1 np.newaxis
使用索引的语法给数组添加维度

a=np.array([1,2,3,4])
a[np.newaxis,:]
"""
[
	[1,2,3,4]
]
"""
a[:,np.newaxis]
"""
[
	[1],
	[2],
	[3],
	[4]
]
"""

2 expand_dims(arr,axis)
和1一样,axis=0添加行维度,axis=1添加列维度
3 reshape(a,newshape)
任意改变多个维度

7 合并数据

1 concatenate(array_list,axis=0/1)
沿着指定的axis进行数据合并
2 vstack/row_stack
按行进行合并
3 hstack/column_stack
按列进行合并

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值