numpy学习笔记

Python NumPy 的学习笔记 阅读详情

2017/03/07

#!/usr/bin/env python
# -*- coding: UTF-8 -*-
"""
@author: XiangguoSun
@contact: sunxiangguodut@qq.com
@file: learn_numpy.py
@time: 2017/3/6 15:09
@software: PyCharm
"""
import numpy as np


'''
1 ndarray
'''
data=[[1,2,3],[4,5,6]]#也可以是其他序列类型
arr1=np.array(data)
print arr1,arr1.ndim,arr1.shape,arr1.dtype

print np.zeros((3,)),np.zeros((3,)).ndim,np.zeros((3,)).shape
print np.zeros((3,1)),np.zeros((3,1)).ndim,np.zeros((3,1)).shape
print np.zeros((1,3)),np.zeros((1,3)).ndim,np.zeros((1,3)).shape
print np.zeros(3),np.zeros(3).ndim,np.zeros(3).shape #np.zeros(3)==np.zeros((3,))

print np.ones(3)
print np.empty(3)
print np.ones_like(arr1),np.zeros_like(arr1),np.empty_like(arr1)#shape 为arr1的ndarry
print np.identity(2)#等价于np.eye(2)#创建单位矩阵

'''
2 ndarray和标量运算
大小相同的ndarray之间任何运算都会将运算应用到元素级
ndarray与标量的运算也会将那个标量broadcasting到ndarray的各个元素中
但是,不同大小的数组之间的运算叫做broadcasting。
2.1简单的运算
略
2.2 broadcasing
广播的原则:
如果两个数组的后缘维度的轴长相符或者其中一方长度为1,则认为他们是广播兼容的。
广播会在缺失维度和(或)长度为1的维度上进行。
例如:
1:shape((4,3))+shape((3,))
(4,3)和(3,)的后缘维度为3.因此是广播兼容的。传播方向在缺失维度上进行。
这里 4 vs 缺失, 3 vs 3
因此传播方向沿着0轴
2:shape((4,3))+shape((4,1))
(4,3)和(4,1)的后缘维度为:3 vs 1 因此是广播兼容的。传播方向在
1轴上
试想,如果是(1,4,3)和(4,1)呢?
也是广播兼容的,但是传播方向在0轴和2轴上

3:shape((3,4,2))+shape((4,2))
(3,4,2)和(4,2)的后缘维度是4vs4 2 vs 2.因此是广播兼容的,传播方向在缺失轴0轴

4:shape((1,5,3))+shape((5,3))
后缘维度是 5 vs 5, 3 vs 3因此是广播兼容的,传播方向在缺失轴0轴
'''
#print np.ones((3,4,2))+np.ones((3,4,2))#报错,因为广播不兼容

'''
2 基本的索引和切片
如果你想得到ndarray切片的一份副本而非在源数据上修改,就需要显示地进行复制操作
b=arr[5:8].copy()
否则,单纯地b=arr[5:8]
那么修改b,arr对应的元素也会被修改
很简单,略
'''
'''
3,bool型索引
'''
names=np.array(['bob','bob','david'])
values=np.array([1,2,3])
print values[names == 'bob']#& | -(!),注意python 关键字and or在这里无效
print values[values > 2]
'''
4,花式索引
花式索引与切片不同,它总是将数据复制到新数组中
'''
arr= np.arange(32).reshape((8,4))
print arr
print "   "
print arr[[1,5,2,7]]
print arr[[1,5,2,7]]
print arr[[1,5,2,7],[2,1,3,1]]#(1,2),(5,1),(2,3),(7,1)
print arr[[1,5,2,7]][:,[2,1,3,1]]
print arr[np.ix_([1,5,2,7],[2,1,3,1])]
'''
5,数组转置和轴对换
'''
arr= np.arange(15).reshape((3,5))
print arr
print arr.transpose()
print arr.T
print np.dot(arr.T,arr)

arr = np.arange(16).reshape((2,2,4))
print arr
print arr.transpose((1,0,2))#轴序列原本为(0,1,2),现在变成(1,0,2),相当于交换x,y:m[y][x][z]=m[x][y][z]
print arr.swapaxes(1,2)#交换1号轴和2号轴m[x][z][y]=m[x][y][z]

6,通用函数
通用函数执行元素级别运算的函数。作用到每个元素。


这里写图片描述
这里写图片描述

7,meshgrid

接受两个一维数组,返回一个平面,这个平面用两个array接受。

这里写图片描述

```
#!/usr/bin/env python
# -*- coding: UTF-8 -*-
"""
@author: XiangguoSun
@contact: sunxiangguodut@qq.com
@file: learn_numpy.py
@time: 2017/3/6 15:09
@software: PyCharm
"""
import numpy as np
import matplotlib.pyplot as plt


points=np.arange(-5,5,0.01)
xx,yy=np.meshgrid(points,points)
z=np.log(np.exp(xx)+np.exp(yy))
z2=np.maximum(xx,yy)

fig = plt.figure()
ax1 = fig.add_subplot(121)
ax2 = fig.add_subplot(122)
# ax3 = fig.add_subplot(223)
# ax4 = fig.add_subplot(224)

ax1.contourf(xx,yy,z,20)
ax1.set_title("image of $ln( e^{x_1}+e^{x_2} )$")

ax2.contourf(xx,yy,z2,20)
ax2.set_title("image of $max(x_1,x_2 )$")
# ax3.imshow(z)
# ax4.imshow(z2)
plt.show()

这里写图片描述

'''
8,where
'''
xarr=np.array([1.1,1.2,1.3,1.4,1.5])
yarr=np.array([2.1,2.2,2.3,2.4,2.5])
condition = np.array([True,False,True,True,False])
results1= np.where(condition,xarr,yarr)#如果为True,取xarr中的值,否则取yarr
results2=np.where(xarr>1.3,1,0)
print results1,results2

'''
9,数组统计方法
'''
arr=np.random.randn(5,4)
arr.mean()
np.mean(arr)

这里写图片描述
这里写图片描述

'''
10,集合逻辑
'''
arr = np.random.randn(100)
print (arr > 0).sum()  # 正值的数量
bools = np.array([False, True, False, False])
print bools.any()  # 用于测试数组中是否存在一个或多个True
print bools.all()  # 用于测试数组中是否都是True
arr.sort(0)#在0轴向上排序,这个是就地排序。np.sort(arr)是创建一个副本

names=np.array(['bob','bob','joe','joe','xi'])
np.unique(names)#去重复并按排序,相当于sorted(set(names))


这里写图片描述

'''
11,持久化
'''
arr = np.arange(10)
np.save('some_array', arr)
print np.load('some_array.npy')

arr2 = np.arange(5)
np.savez('new_array',a=arr,b=arr2)
arr_dic = np.load('new_array.npz')#该对象会对各个数组进行延迟加载
print arr_dic['a'],arr_dic['b']

np.savetxt('arr.txt',arr)
arr3 = np.loadtxt('arr.txt')#delimiter=,converters=,skiprows=
print arr3

'''
11,线性代数
'''
arr= np.random.rand(9).reshape((3,3))
print arr
print np.diag(arr,k=0)#返回方阵的对角线(k=0)
print np.diag(arr,k=-1),np.diag(arr,k=1),np.diag(arr,k=-2),np.diag(arr,k=2)

arr = np.random.rand(3)
a = np.diag(arr)#将一维数组转换为方阵(非对角线元素为0)
print a,a.shape

print np.trace(arr)#计算对角线元素和(迹)


from numpy.linalg import *

print det(arr)  # 计算矩阵行列式
print eig(arr)  # 计算特征值和特征向量
print inv(arr)  # 计算逆矩阵
print pinv(arr) # 伪逆
print qr(arr)   # QR分解
svd(arr)
b=np.array([1,2,3])
print solve(arr,b)  # 求方程组 Ax=b
print lstsq(arr,b) # 求方程组 Ax=b最小二乘解

'''
12,随机数
'''
import numpy.random

numpy.random.seed(1)
print numpy.random.permutation([1,2,3,4,5])
print numpy.random.permutation(5)

arr = np.random.randn(3)
print arr
numpy.random.shuffle(arr)
print arr

这里写图片描述
这里写图片描述

图解 NumPy 学习笔记(一):初识 NumPy import numpy as np # 导入 NumPy, 开始学习 感谢 NumPy, 本系列将使用图解以及脑图的方法来记录我的《图解 NumPy 学习笔记》。 NumPy是 Numerical Python 的简称,它是目前 Python 数值计算中最为重要的基础包。大多数计算包都提供了基于 NumPy 的科学计算函数功能,将 NumPy 的数组对象作为数据交换的通用语。—... 阅读详情

相关推荐

线上专利申请(超详细)| 签名确认

在【法人登录】页面点击【证书登录】按钮,弹出证书登录提示框,点击【确 认】按钮,进入到输入证书密码页面,点击【取消】按钮,取消本次操作。企业在提交申请时,需要增加签名,如使用企业账户点击提交,会弹出“法人、代理机构不能签名,请使用经办人签名”,这个时候就需要换个账号了。在需要签名时,将专利官网的登录方式点击法人登录,选择扫码登录,使用移动端经办人账户的扫一扫功能扫描登录。登录完成后,再点击签名,使用移动端扫一扫功能,扫描签名,输入证书号,确认签名,并提交。最后,祝大家的申请都成功!

weixin_62112323的博客 9111

Numpy全系列笔记

python numpy 数据分析工具之一

m0_58086930的博客 2734

清华电子系保研面试全记录:五轮硬核考核+工程硕博专项解析(附真题)

本文详细解析了清华大学电子工程系保研面试的完整流程,重点剖析了其标志性的五轮专业面试(涵盖电路、电磁场、信号系统、计算机与AI)和综合组群面,并深入解读了工程硕博改革专项的考核要点与备战策略。文章提供了各专业组的真题示例与应对方法,旨在帮助电子信息相关专业学子系统准备,从容应对这场高强度的知识与综合素质挑战。

u0v1w2x3的博客 587

numpy学习小笔记

numpy库学习

qq_62854552的博客 1252

【Unity】【2D】用连续图片生成动画Animation的简明步骤

本文介绍了Unity中使用2D连续图片制作2D动画Animation的简明步骤。

O青草O的博客 Unity和游戏制作知识分享 718

微信小程序 - 实现身份证OCR识别人像面与国徽面并提取字段信息,详解从手机相册选取或打开摄像头拍照上传身份证正反面图片ocr文字识别数据填充表单(提供免费纯前端ocr识别插件+百度OCR识别API)

微信小程序身份证识别,微信小程序身份证拍照、上传并OCR识别,微信小程序实现OCR扫描识别,微信小程序识别身份证免费插件,微信小程序实现身份证识别功能。ocr识别插件。微信身份证拍照后进行ocr识别,微信小程序OCR扫描识别身份证,OCR身份证实名认证+图片上传+拍照上传图片,微信小程序之身份证照片正反上传,小程序OCR身份证识别,微信小程序实现文字识别-ocr插件,微信小程序利用百度AI实现扫描身份证获取信息功能,基于微信小程序OCR插件实现身份证拍照、上传并OCR识别的示例demo,将上传的照片传到服务

🏆 前端领域优质创作者 8134

小易的Numpy学习笔记

NumPy 提供了比 Python 更加丰富的数据类型(3intc和 C 语言的 int 类型一样,一般是 int32 或 int 644intp用于索引的整数类型(类似于 C 的 ssize_t,通常为 int32 或 int64)17complex_复数类型,与 complex128 类型相同18complex64表示实部和虚部共享 32 位的复数19complex128表示实部和虚部共享 64 位的复数22string_表示字节串类型,等价于bytes_

小易的博客 1151

SAP Build Work Zone standard edition 订阅报错 OIDC trust missing 的成因与完整解决路径

摘要:用户订阅SAP Build Work Zone时遇到422错误,提示未配置OpenID Connect信任。该错误表明业务用户需通过SAP Cloud Identity Services的OIDC协议认证,而当前子账户仅配置了SAML信任或未配置信任。解决方法是进入子账户的Trust Configuration页面,使用Establish Trust功能建立与SAP Cloud Identity Services的OIDC信任关系。这是SAP新版服务的强制要求,SAML协议已不被支持。

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 197

NumPy 学习笔记

Matplotlib是Python的一个绘图库,支持跨平台运行,能够根据NumPy ndarray数组绘制2D图像。Matplotlib的图形由Figure、Axes、Axis和Artist对象组成,提供了丰富的绘图类型和自定义选项。Matplotlib允许通过各种参数和函数自定义图表的外观,如设置标题、标签、图例、坐标轴范围、刻度等。# 创建图形和子图# 绘制数据# 设置标题和标签# 添加图例# 设置坐标轴范围# 设置刻度# 显示网格# 显示图形plt.show()

2202_75762857的博客 716

【Flink】FLink session yarn kerberos认证报错 PortUnreachableException: ICMP Port Unreachable

本篇博客是在上一篇博客:【Flink】FLink session yarn kerberos认证报错 KrbException: Cannot locate default realm还没找到原因的时候做的一次尝试。因为项目需要,我们需要对接华为认证的yarn集群,运行flink任务,我们的任务分为两种,yarn pre-job模式和flink session模式。我们在配置文件中配置如下# kerberos认证需要的东西提交任务的脚本如下。

九师兄 1267

什么是 SAP PCE?

SAP Private Cloud Edition 是一种基于云计算的部署模式,它结合了公有云的灵活性和私有云的安全性,为企业提供了量身定制的云服务。在 PCE 环境中,SAP 托管和维护客户的应用系统(如 SAP S/4HANA、SAP SuccessFactors 或 SAP BW/4HANA),同时客户拥有更高的定制化权限。专属环境:每个客户在云中拥有独立的资源,这保障了更高的安全性和性能。全面托管:SAP 提供基础架构、系统管理和更新服务,降低了客户的运维成本。灵活扩展。

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 2246

Numpy学习笔记分享

NumPy是Python数据分析领域的基础库,以其高效的数组操作和数学计算能力闻名,效率高于list的计算速度。本文基于学习笔记整理,带你快速掌握NumPy的核心功能。如有不足,亲谅解!

2401_83372039的博客 1614

声音源定位:利用YOLO与麦克风阵列定位声音来源YOLOv5、YOLOv8、YOLOv10

YOLO(You Only Look Once)是一个用于目标检测的深度学习模型。YOLO的最大特点是其通过一次前向传播即可完成多个目标的检测,速度和精度相对其他目标检测算法具有显著优势。YOLO模型的版本不断更新,从YOLOv1到YOLOv10,算法精度和速度都有了显著的提升。声音源定位是利用多个麦克风阵列收集的声音信号,通过算法计算声音源的位置。声音源定位的关键在于准确估计每个麦克风的声音到达时间,从而确定声音源的空间坐标。基于时延估计(TDOA)

YOLO 673

Numpy学习笔记

intp 用于索引的整数,相当于C的size_t,通常为int32或int64。int_ 默认整数,相当于C的long,通常为int32或int64。float64 双精度浮点:1个符号位 11个指数位, 52个尾数。float16 半精度浮点:1个符号位 5个指数位, 10个尾数。float32 单精度浮点:1个符号位 8个指数位, 23个尾数。intc 相当于C的int,通常为int32或int64。uint16 16位无符号整数。uint32 32位无符号整数。uint64 64位无符号整数。

sinat_34194779的博客 480

Outlook Express 6 (OE6) for Win7/Win8/Win10

英文版 Outlook Express6.0, 兼容Win7/Win10/WinXP,解压就可用。

华为的C语言编程规范.pdf

华为技术有限公司内部技术规范。本规范制定了编写C语言程序的基本原则、规则和建议。从代码的清晰、简洁、可测试、安全、程序效率、可移植各个方面对C语言编程作出了具体指导。

Numpy学习笔记pdf下载

Numpy学习笔记pdf下载 去发现同类优质开源项目:https://gitcode.com/ 此仓库提供了《Numpy学习笔记》的PDF版本,适用于希望深入学习Numpy库使用方法的用户。该资源详细记录了Numpy库的基本使用、高级功能和实例解析,是学习Numpy不可多得的参考资料。通过这份学习笔记,你可以系统地掌握Numpy的核心概念和编程技巧,为数据处理、科学计算打下坚实基础。 去发现同类...

gitblog_06739的博客 315

Statistics and Machine Learning Toolbox

Statistics and Machine Learning Toolbox(带书签),MATLAB统计学习工具

Numpy np.array 相关常用操作学习笔记

Numpy np.array 相关常用操作学习笔记 1.np.array构造函数 用法:np.array([1,2,3,4,5]) 1.1 numpy array 和 python list 有什么区别? 标准Python的列表(list)中,元素本质是对象。如:L = [1, 2, 3],需要3个指针和三个整数对象,对于数值运算比较浪费内存和CPU。因此,Numpy提供了nda...

low米的博客 909

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

NumPy学习笔记

numpy.asarray类似于numpy.array,但numpy.asarray参数值有三个,比numpy.array少两个[1 2 3][1 2 3]

2402_86606300的博客 849

Numpy学习笔记(上)

数组中的每个元素占有大小相同的内存块,按照一定布局排列,按行或按列,可以使用索引或切片的方式获取数组的每个元素。如果直接在创建数组后面加 reshape,或者用相同的变量名,原数组名指向reshape后的新数组原来的数组名字被新数组占用,释放原数组内存,原数组销毁,而非 reshape 在原数组上进行修改,不要混为一谈。由于数组只能有一个数据类型,这里将后面的整型自动转化(隐式转换)为浮点型, 打印结果为 float64 ,创建时不指定 dtype 会自动根据数据来匹配一个合适的数据类型。

a819125410的博客 1180

NumPy学习笔记前言

这里写自定义目录标题NumPy学习笔记前言NumPy简介NumPy安装合理的创建标题,有助于目录的生成如何改变文本的样式插入链接与图片如何插入一段漂亮的代码片生成一个适合你的列表创建一个表格设定内容居中、居左、居右SmartyPants创建一个自定义列表如何创建一个注脚注释也是必不可少的KaTeX数学公式新的甘特图功能,丰富你的文章UML 图表FLowchart流程图导出与导入导出导入 NumPy学习笔记前言 这里主要分享一下我个人学习NumPy的笔记,希望大家多多交流学习,这也是我第一次写优快云,如果有

weixin_48466256的博客 301
上一篇: logistic回归
下一篇: 读源码1
相国大人
博客等级 码龄10年 1009粉丝 132原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值