NumPy基础

Numpy基础

建议与Jupyter Notebook配合阅读

import numpy as np

概述

NumPy特点:

  • 内部数据存储在连续的内存块上
  • 算法库使用C语言编写
  • 针对全量数组进行复杂运算,不用使用循环
  • NumPy方法比Python方法 10~100倍,使用 更少 的内存

多维数组对象

生成ndarray
np.array – 由列表生成数组
data1 = [1,2,3,4,5]
a = np.array(data1)
a
# 自动推断生成的数据数据类型
a.dtype
np.zeros – 生成全0数组
# 设置参数dtype可以设定数据类型
np.zeros(10, dtype=np.int64)

np.zeros((3, 4))

np.zeros((2, 4, 3))
np.arange – 类似于range
np.arange(20)
np.ones – 生成全1数组
np.ones(10)
np.eye – 生成N×N特征矩阵
np.eye(8)
数据类型
  • int, uint
  • float
  • complex
  • bool
  • object
  • string_
  • unicode_
astype – 转换数据类型
arr = np.arange(20)
arr_ = arr.astype(np.float16)

arr.dtype
arr_.dtype
数组算数 – 向量化
arr = np.array([range(5), range(3,8), range(10,15)])
arr
arr * arr
1 / arr
arr < arr*arr
基础索引与切片

基本操作与Python内建的list相同,多维数组略有区别

arr = np.array([range(1,4), range(2,5), range(3,6)])
arr
arr[0][1]
arr[0, 1]
arr[0, :2]
arr[1:, :2]
布尔索引
words = np.array(["Apple", "Bat", "Cake", "Dog", "Bat"])
condition = words == "Bat"

words
condition
arr2 = np.array([range(4,7), range(5,8), range(6,9), range(7,10), range(8,11)])
arr2
arr2[condition]
神奇索引 – 按指定顺序索引
arr = np.array([range(4,7), range(5,8), range(6,9)])
arr
arr[[2,1,0]]

神奇索引将数据复制到新数组中

数组转置
arr = np.array([range(4,7), range(6,9), range(8,11)])
arr
arr.T

通用函数 – 逐元素数组函数

一元通用函数
  • abs, fbs    绝对值
  • sqrt    开方
  • square    平方
  • exp    自然指数值e^x
  • log log2 log10 log1p    log1p:log(1+x)
二元通用函数
  • add    数组相加
  • multiply    元素对应相乘
  • divide    除

面向数组编程

将条件逻辑作为数组操作
arr = np.random.randn(5,5)
#将数组中大于0的元素置1,其余置0
result = np.where(arr>0, 1, 0) #np.where(condition, if condition, else)

arr
result
数学和统计方法
  • sum    求和
  • mean    求平均值
  • std, var    求标准差,方差
  • min, max    最小值,最大值
  • argmin, argmax    最小值,最大值的位置
  • cumsum    从0开始元素累积和
  • cumprod    从1开始元素累积积
# cumsum
arr = np.arange(1,11)
arr
np.cumsum(arr)
# cumprod
np.cumprod(arr)
集合逻辑
  • unique(x)    对x去重并排序
  • intersect1d(x,y)    计算x和y交集并排序
  • union1d(x,y)    计算x和y并集并排序
  • in1d(x,y)    判断x中元素是否在y中,返回布尔数组
  • setdiff1d(x,y)    差集
  • setxor1d(x,y)    异或集

文件输入输出

存储
arr = np.arange(10)
np.save('file_name', arr)

文件类型为.npy

读取
arr = np.load('file_name.npy')

线性代数

x = np.array([range(1,4), range(2,5)])
y = np.array([range(3,5), range(4,6), range(5,7)])
矩阵点乘
# 以下三个操作等价
np.dot(x,y)
x.dot(y)
x @ y
其他操作
import numpy.linalg
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值