首页 > 其他分享 >numpy 读书报告

numpy 读书报告

时间:2023-12-28 22:33:58浏览次数:35  
标签:报告 grad random print 读书 np import numpy

numpy 库常见函数的介绍

<1>. numpy创建数组

1. 从已有数据中创建数组

  a. 将列表转换成 ndarray:

import numpy as np
ls1 = [10, 42, 0, -17, 30]
nd1 =np.array(ls1)
print(nd1)
print(type(nd1))

  运行结果:

[ 10  42   0 -17  30]
<class 'numpy.ndarray'>

  b.嵌套列表可以转换成多维 ndarray:

import numpy as np
ls2 = [[8, -2, 0, 34, 7], [6, 7, 8, 9, 10]]
nd2 =np.array(ls2)
print(nd2)
print(type(nd2))

  运行结果:

[[ 8 -2  0 34  7]
[ 6  7  8  9 10]]
<class 'numpy.ndarray'>

 

2. 利用 random 模块生成数组

 

几种 np.random 模块中常用的方法,如下表所示。

 

 

 

 

 

 

 

                             

 

 下面来看一些使用:

 

import numpy as np
import random
nd3 =np.random.random([4, 3])  #生成4行3列的数组
print(nd3)
print("nd3的形状为:",nd3.shape)

 

执行结果:

 

[[0.59115057 0.52022516 0.05992361]
 [0.5077815  0.81313999 0.70061259]
 [0.24654561 0.11705634 0.71399966]
 [0.73964407 0.57138345 0.89284498]]
nd3的形状为: (4, 3)

 

为了每次生成同一份数据,可以指定一个随机种子,使用 shuffle() 函数打乱生成的随机数。

 

复制代码 复制代码
import numpy as np
np.random.seed(123)
nd4 = np.random.randn(4, 3)
print(nd4)
np.random.shuffle(nd4)
print("随机打乱后数据:")
print(nd4)
print(type(nd4))
复制代码 复制代码

 

执行结果:

 

复制代码 复制代码
[[-1.0856306   0.99734545  0.2829785 ]
 [-1.50629471 -0.57860025  1.65143654]
 [-2.42667924 -0.42891263  1.26593626]
 [-0.8667404  -0.67888615 -0.09470897]]
随机打乱后数据:
[[-1.50629471 -0.57860025  1.65143654]
 [-2.42667924 -0.42891263  1.26593626]
 [-0.8667404  -0.67888615 -0.09470897]
 [-1.0856306   0.99734545  0.2829785 ]]
<class 'numpy.ndarray'>
复制代码 复制代码

 

3. 创建特定形状的多维数组

 

参数初始化时,有时需要生成一些特殊矩阵,如全是 0 或 1 的数组或矩阵,这时我们可以利用 np.zeros、np.ones、np.diag 来实现,如下表所示。

 

             

 

下面通过几个示例说明:

 

复制代码 复制代码
import numpy as np
# 生成全是 0 的 3x3 矩阵
nd5 =np.zeros([3, 3])
# 生成全是 1 的 3x3 矩阵
nd6 = np.ones([3, 3])
# 生成 4 阶的单位矩阵
nd7 = np.eye(4)
# 生成 4 阶对角矩阵
nd8 = np.diag([1, 8, 3, 10])
print("nd5 =\n", nd5)
print("nd6 =\n", nd6)
print("nd7 =\n", nd7)
print("nd8 =\n", nd8)
复制代码 复制代码

 

运行结果:

 

复制代码 复制代码
nd5 =
[[0. 0. 0.]
[0. 0. 0.]
[0. 0. 0.]]
nd6 =
[[1. 1. 1.]
[1. 1. 1.]
[1. 1. 1.]]
nd7 =
[[1. 0. 0. 0.]
[0. 1. 0. 0.]
[0. 0. 1. 0.]
[0. 0. 0. 1.]]
nd8 =
[[ 1  0  0  0]
[ 0  8  0  0]
[ 0  0  3  0]
[ 0  0  0 10]]
复制代码 复制代码

 


有时还可能需要把生成的数据暂时保存到文件中,以备后续使用。

 

import numpy as np
nd9 =np.random.random([3, 5])
np.savetxt(X=nd9, fname='./data.txt')
nd10 = np.loadtxt('./data.txt')
print(nd10)

 

运行结果:

 

[[0.1744383  0.15515217 0.74885812 0.57633094 0.06300636]
[0.24340527 0.65213913 0.07284238 0.52232677 0.58538849]
[0.83611286 0.76508018 0.26018483 0.20485587 0.95476232]]

 

打开当前目录下的 data.txt 也可以看到格式化的数据。

 

#图像的手绘效果实现(具体问题+图像处理)

 

 

#图像的手绘效果
from PIL import Image
import numpy as np
vec_el = np.pi/2.2
vec_az = np.pi/4.
depth = 10. # (0-100)
im = Image.open('gpnu.jpg').convert('L')
a = np.asarray(im).astype('float')
grad = np.gradient(a)
grad_x, grad_y = grad
grad_x = grad_x*depth/100.
grad_y = grad_y*depth/100.
dx = np.cos(vec_el)*np.cos(vec_az)
dy = np.cos(vec_el)*np.sin(vec_az)
dz = np.sin(vec_el)
A = np.sqrt(grad_x**2 + grad_y**2 + 1.)
uni_x = grad_x/A
uni_y = grad_y/A
uni_z = 1./A
a2 = 255*(dx*uni_x + dy*uni_y + dz*uni_z)
a2 = a2.clip(0,255)
im2 = Image.fromarray(a2.astype('uint8'))

im2.save('gpnuHandDraw.jpg')

 

 

  好文要顶 关注我 收藏该文 

标签:报告,grad,random,print,读书,np,import,numpy
From: https://www.cnblogs.com/fmhqq/p/17933733.html

相关文章

  • Matplotlib读书报告
    1.Matplotlib简介  Matplotlib是Python的一个2D图形库,能够生成各种格式的图形(诸如折线图,散点图,直方图等等),界面可交互(可以利用鼠标对生成图形进行点击操作),同时该2D图形库跨平台,即既可以在Python脚本中编码操作,也可以在JupyterNotebook中使用,以及其他平台都可以很方便的使用Ma......
  • 读书报告
    numpy基本函数的用法ChatGPT-4-TurboNumPy是Python中的一个开源数值计算扩展库,用于数据分析、机器学习、科学计算等领域。它提供了大量的数学函数来操作数组和矩阵。以下是一些最常用的NumPy基本函数的简介和用法示例。创建数组numpy.array-用于创建数组。importnumpyas......
  • 《程序员的修炼之道》第三章读书笔记
    第3章基本工具中,包含了一些常用的工具和技巧,可以提高我们的工作效率和代码质量。以下是这些小节的简要介绍:14.纯文本的威力:纯文本是一种通用的文件格式,它在各种场景中都非常有用。本节介绍了一些处理纯文本的强大工具和技术,比如正则表达式、grep、sed等。15.shell游戏:shell是......
  • numpy、scipy、pandas、matplotlib的读书报告
    Numpy:基础的数学计算模块,以矩阵为主,纯数学。SciPy:基于Numpy,提供方法(函数库)直接计算结果,封装了一些高阶抽象和物理模型。比方说做个傅立叶变换,这是纯数学的,用Numpy;做个滤波器,这属于信号处理模型了,在Scipy里找。Pandas:提供了一套名为DataFrame的数据结构,适合统计分析中的......
  • 《FPGA原理和结构》——读书笔记
    最近做了一个关于FPGA的项目后,读了《FPGA原理和结构》这本书。主要梗概内容和想法如下。第一章:理解FPGA所需要的基础知识理解FPGA我们需要数电的组合逻辑、时序逻辑等内容的知识。FPGA(20世纪70年度发展起来的,因为其具有通过组合使用器件内大量的逻辑块来实现所需的电路,比以往侠......
  • numpy、scipy、pandas、matplotlib的读书报告:‪‬‪‬‪‬‪‬‪‬‮‬‪‬‫‬‪‬‪
    1、基本函数用法Numpy:基础的数学计算模块,来存储和处理大型矩阵,比Python自身的嵌套列表(nestedliststructure)结构要高效的多,本身是由C语言开发。这个是很基础的扩展,其余的扩展都是以此为基础。数据结构为ndarray,一般有三种方式来创建。Scipy:方便、易于使用、专为科学和工程......
  • 读书笔记+画图
    print("0217向悦")importnumpyasnp#创建两个矩阵a=np.array([[1,2,3],[4,5,6]])b=np.array([[7,8],[9,10],[11,12]])#计算矩阵乘积c=np.dot(a,b)#打印结果print(c)importscipy.optimizeasopt#定义方程组的函数deff(x):return[x[0]**2+x[1]**2-1,x[0......
  • 读书报告
    Numpy:存储和处理大型矩阵,比Python自身的嵌套列表结构高效,由C语言开发。数据结构为ndarray,一般有三种方式来创建。Pandas:基于NumPy的一种工具,该工具是为了解决数据分析任务而创建的。Pandas纳入了大量库和一些标准的数据模型,提供了高效地操作大型数据集所需的工具。最具有统......
  • 监控易:运维报告的精细化指南
        监控易是一款功能强大的监控工具,它提供了实时报告、TOPN报告、统计报告、流量统计、服务器报告、网络设备报告、故障报告和告警报告等多种报告,以便用户能够全面了解和分析系统的运行状况。    实时报告:实时报告是监控易的重要功能之一,它能够实时展示监控设备......
  • 读书笔记2
    孟凡荣等所著《多版本TPR树》。文中参考TR树构建了多版本TPR树。文中称多数算法参考TR树,我并没有看过TR树的文献,故具体算法尚不清楚。仅从文中所述来看TPR树是一种全时态的索引。其中的每一条记录都有一个起始时间和一个终止时间,并设置一个特定的终止时间代表“未来”,以表示这个记......