广告
返回顶部
首页 > 资讯 > 后端开发 > Python >numpy学习笔记 - numpy常用函
  • 221
分享到

numpy学习笔记 - numpy常用函

学习笔记常用numpy 2023-01-30 22:01:10 221人浏览 泡泡鱼

Python 官方文档:入门教程 => 点击学习

摘要

# -*- coding: utf-8 -*-"""主要记录代码,相关说明采用注释形势,供日常总结、查阅使用,不定时更新。Created on Fri Aug 24 19:57:53 2018 @author: Dev"""   i

# -*- coding: utf-8 -*-
"""
主要记录代码,相关说明采用注释形势,供日常总结、查阅使用,不定时更新。
Created on Fri Aug 24 19:57:53 2018

@author: Dev
"""

 

import numpy as np
import random
 
# 常用函数
arr = np.arange(10)
print(np.sqrt(arr))    # 求平方根
print(np.exp(arr))    # 求e的次方
 
random.seed(200)    # 设置随机种子
x = np.random.nORMal(size=(8, 8))
y = np.random.normal(size=(8, 8))
np.maximum(x, y)    # 每一位上的最大值
 
arr = np.random.normal(size=(2, 4)) * 5
print(arr)
print(np.modf(arr))    # 将小数部分与整数部分分成两个单独的数组
 
# 向量化操作
# meshgrid的基本用法
points1 = np.arange(-5, 5, 1)     # [-5, 5]闭区间步长为1的10个点
points2 = np.arange(-4, 4, 1)
xs, ys = np.meshgrid(points1, points2)    # 返回一个由xs, ys构成的坐标矩阵
print(xs)   # points1作为行向量的len(points1) * len(points2)的矩阵
print(ys)   # points2作为列向量的len(points1) * len(points2)的矩阵
 
# 将坐标矩阵经过计算后生成灰度图
import matplotlib.pyplot as plt
points = np.arange(-5, 5, 0.01)     # 生成1000个点的数组
xs, ys = np.meshgrid(points, points)
z = np.sqrt(xs ** 2 + ys ** 2)  # 计算矩阵的平方和开根
print(z)
plt.imshow(z, cmap=plt.cm.gray)
plt.colorbar()
plt.title("Image plot of $\sqrt{x^2 + y^2}$ for a grid of values")
plt.show()
 
 
# 将条件逻辑表达为数组运算
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])
cond = np.array([True, False, True, True, False])
# 纯python,用列表解析式做判断
result = [x if c else y for x, y, c in zip(xarr, yarr, cond)]
# zip()基本用法
a = [1, 2, 3]
b = [4, 5, 6]
c = [7, 8, 9]
for tupple_a in zip(a, b, c):   # Python 3.x为了减少内存占用,每次zip()调用只返回一个元组对象
    print(tupple_a)
 
# np.where()
result = np.where(cond, xarr, yarr)
 
 
# np.where()的用法:
 
#np.where()的几个例子
# condition, x, y均指定
np.where([[False, True], [True, False]],
[[1, 2], [3, 4]],
[[9, 8], [7, 6]])
# 只指定condition时,返回np.nonzero(),即非零元素的索引
x = np.arange(9.).reshape(3, 3)
np.where( x > 5 )
x[np.where( x > 3.0 )]  # 将索引值带入原数组,得到满足大于3条件的元素
 
arr = np.random.normal(size=(4,4))
print(arr)
np.where(arr > 0, 2, -2)
np.where(arr > 0, 2, arr)   # 只将大于0的元素设置为2
 
# 用np.where()进行多条件判断
# 例子: 对0~100范围内的数进行判断
# 纯python
sum1 = 0
for i in range(0, 100):
    if np.sqrt(i) > 3 and np.sqrt(i) < 5:   # 平方根在(3, 5)之间
        sum1 += 3
    elif np.sqrt(i) > 3:    # 平方根在[5, 10)之间
        sum1 += 2
    elif np.sqrt(i) < 5:    # 平方根在(0, 3]之间
        sum1 += 1
    else:
        sum1 -= 1
print(sum1)
注: 这个例子其实用的不好,最后一个sum -= 1实际上没有用到,只是用这个例子说明多条件判断。
 
# 使用np.where()
num_list = np.arange(0, 100)
cond1 = np.sqrt(num_list) > 3
cond2 = np.sqrt(num_list) < 5
result = np.where(cond1 & cond2, 3, np.where(cond1, 2, np.where(cond2 < 5, 1, -1)))
print(sum(result))
 
 
# 数学与统计方法
arr = np.random.normal(size=(5, 4))
arr.mean()  # 平均值
np.mean(arr)
arr.sum()   # 求和
arr.mean(axis=1)    # 对行求平均值
arr.sum(0)  # 对每列求和
arr.sum(axis=0)
 
arr = np.arange(9).reshape(3, 3)
arr.cumsum(0)   # 每列的累计和
arr.cumprod(1) # 每行的累计积
 
注: 关于numpy中axis的问题
axis=1可理解为跨列操作
axis=0可理解为跨行操作
 
# 布尔型数组
arr = np.random.normal(size=(10, 10))
(arr > 0).sum() # 正值的数量
bools = np.array([False, False, True, False])
bools.any() # 有一个为True,则结果为True
bools.all() # 必须全为True,结果才为True
 
arr = np.random.normal(size=(4, 4))
print(arr)
arr.sort()  # 对每行元素进行排序
 
arr = np.random.normal(size=(5, 3))
print(arr)
arr.sort(0) # 对每列元素进行排序
# 求25%分位数(排序后根据索引位置求得)
num_arr = np.random.normal(size=(1000, 1000))
num_arr.sort()
print(num_arr[0, int(0.25 * len(num_arr))])
 
# 求唯一值
names = np.array(['Bob', 'Joe', 'Will', 'Bob', 'Will', 'Joe', 'Joe'])
print(np.unique(names))
# 纯Python
print(sorted(set(names)))
# 判断values中的列表元素是否在数组list_a中
arr_a = np.array([6, 0, 0, 3, 2, 5, 6])
values = [2, 3, 6]
np.in1d(arr_a, values)
 
# 线性代数相关的函数
x = np.array([[1., 2., 3.], [4., 5., 6.]])
y = np.array([[6., 23.], [-1, 7], [8, 9]])
x.dot(y)    # 矩阵的乘法
np.dot(x, y)
np.dot(x, np.ones(3))
 
np.random.seed(12345)
from numpy.linalg import inv, qr
X = np.random.normal(size=(5, 5))
mat = X.T.dot(X)    # 矩阵X转置后再与原X相乘
inv(mat)    # 求逆矩阵
mat.dot(inv(mat))   # 与逆矩阵相乘
 
 
# 随机数
samples = np.random.normal(size=(4, 4))
samples
from random import normalvariate
# normalvariate(mu,sigma)
# mu: 均值
# sigma: 标准差
# mu = 0, sigma=1: 标准正态分布
 
# 比较纯Python与numpy生成指定数量的随机数的速度
N = 1000000    # 设置随机数的数量
get_ipython().magic(u'timeit samples = [normalvariate(0, 1) for _ in range(N)]')
get_ipython().magic(u'timeit np.random.normal(size=N)')
结果:
818 ms ± 9.87 ms per loop (mean ± std. dev. of 7 runs, 1 loop each)
34.5 ms ± 164 µs per loop (mean ± std. dev. of 7 runs, 10 loops each)
 
 
# 范例:随机漫步
import random
 
# 纯Python
position = 0
walk = [position]
steps = 1000
for i in range(steps):
    step = 1 if random.randint(0, 1) else -1
    position += step
    walk.append(position)
 
# np
np.random.seed(12345)
nsteps = 1000
draws = np.random.randint(0, 2, size=nsteps)    # 取不到2
steps = np.where(draws > 0, 1, -1)
walk = steps.cumsum()   # 求累计和
walk.min()
walk.max()
 
(np.abs(walk) >= 10).argmax()   # 首次到达10的索引数
 
# 一次模拟多个随机漫步
nwalks = 5000   # 一次生成5000组漫步数据
nsteps = 1000
draws = np.random.randint(0, 2, size=(nwalks, nsteps))
steps = np.where(draws > 0, 1, -1)
walks = steps.cumsum(1) # 将5000个样本中每一步的值进行累积求和
print(walks)
 
# 计算首次到达30
hits30 = (np.abs(walks) >= 30).any(1)   # 在列方向上进行对比
print(hits30)
print(hits30.sum()) # 到达+/-30的个数
# 查看每一步中首次到达30的步数
crossing_times = (np.abs(walks[hits30]) >= 30).argmax(1)
# 求到达30的平均步数
crossing_times.mean()
# 标准正态分布
steps = np.random.normal(loc=0, scale=0.25, size=(nwalks, nsteps))
 
 

--结束END--

本文标题: numpy学习笔记 - numpy常用函

本文链接: https://www.lsjlt.com/news/179340.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • numpy学习笔记 - numpy常用函
    # -*- coding: utf-8 -*-"""主要记录代码,相关说明采用注释形势,供日常总结、查阅使用,不定时更新。Created on Fri Aug 24 19:57:53 2018 @author: Dev"""   i...
    99+
    2023-01-30
    学习笔记 常用 numpy
  • NumPy 学习笔记(三)
    NumPy 数组操作:   1、修改数组形状     a、numpy.reshape(arr, newshape, order='C') 在不改变数据的条件下修改形状     b、numpy.ndarray.flat 是一个数组元素迭代器...
    99+
    2023-01-31
    学习笔记 NumPy
  • NumPy 学习笔记(一)
    NumPy:   1、NumPy 是一个功能强大的第三方库(需要自己安装),主要用于对多维数组执行计算;      它提供了大量的库函数和操作,可以帮助程序员更轻松地进行数值计算   2、可以和另外两个第三方库 SciPy 和 Matpl...
    99+
    2023-01-31
    学习笔记 NumPy
  • NumPy 学习笔记(四)
    NumPy 算术函数:   1、numpy.reciprocal(arr) 返回参数逐个元素的倒数   2、numpy.power(one, two) 将第一个输入数组中的元素作为底数,计算它与第二个输入数组中相应元素的幂,即 one^t...
    99+
    2023-01-31
    学习笔记 NumPy
  • NumPy学习笔记(一)
    # NumPy### 安装- 通过安装Anaconda安装NumPy,一个开源的Python发行版本,其包含了conda、Python等180多个科学包及其依赖项,包含了大量的科学计算相关的包,其中就包括NumPy- 通过pip安装, ...
    99+
    2023-01-31
    学习笔记 NumPy
  • 如何用Git管理PHP和NumPy学习笔记?
    在学习编程语言和数据科学时,学习笔记是非常重要的。而Git是一个非常好的工具,可以帮助我们管理这些笔记并使其易于分享和协作。在本文中,我们将介绍如何使用Git来管理PHP和NumPy学习笔记。 首先,我们需要安装Git。在Windows系...
    99+
    2023-10-07
    numy 学习笔记 git
  • Python与NumPy接口:学习笔记是什么?
    Python作为一门高级编程语言,拥有着丰富的生态系统和强大的数据处理能力,而NumPy则是Python生态系统中最基础和最重要的数据处理库之一,为Python提供了高效的多维数组操作和数学函数运算。Python与NumPy接口的学习,不...
    99+
    2023-08-04
    numy 接口 学习笔记
  • Python和NumPy接口:从学习笔记入手。
    Python和NumPy接口:从学习笔记入手 Python是一门广泛应用于数据科学和机器学习的编程语言。NumPy是Python中的一个高性能数组计算库,提供了向量化运算和广播功能,是Python数据科学领域中的核心库之一。在Python中...
    99+
    2023-08-04
    numy 接口 学习笔记
  • Python load numpy,轻松get!学习笔记赠送!
    Python是一门流行的编程语言,它有许多强大的库可以让我们轻松地处理各种数据。其中,numpy是一个非常重要的库,它可以让我们更加高效地处理各种数学运算。在本文中,我们将学习如何使用Python加载numpy,以及如何使用numpy进行数...
    99+
    2023-10-10
    load numy 学习笔记
  • MySQL学习笔记(6):常用函数
    本文更新于2019-06-29,使用MySQL 5.7,操作系统为Deepin 15.4。 目录数值函数日期时间函数字符串函数流程函数聚合函数其他函数全局变量 数值函数 函数 作用 ABS(x) 绝对值 CEIL...
    99+
    2017-05-24
    MySQL学习笔记(6):常用函数
  • PHP和NumPy学习笔记:Git的基础知识和常用命令
    作为一名程序员,我们经常需要协同开发,这时候版本控制工具就显得尤为重要了。Git 是目前最流行的版本控制工具之一,它可以帮助我们管理代码版本,协同开发,回溯历史记录等等。本文将介绍 Git 的基础知识和常用命令,并使用 PHP 和 Num...
    99+
    2023-10-07
    numy 学习笔记 git
  • 如何在学习笔记中使用ASP、NumPy和NPM?
    学习笔记是我们在学习过程中不可或缺的一部分。它们可以帮助我们记录和回顾我们的学习进程,以及帮助我们更好地掌握所学的知识。而在学习过程中,ASP、NumPy和NPM是非常重要的工具,它们可以帮助我们更加高效地完成我们的学习任务。本文将介绍如...
    99+
    2023-09-23
    numy 学习笔记 npm
  • Python里如何使用load numpy?学习笔记分享!
    Numpy是Python中用于科学计算的一个重要的库,它提供了高性能的多维数组对象以及用于处理这些数组的工具。在使用Numpy时,有时我们需要从文件中读取数据并将其转换为Numpy数组。这时候,load函数就显得非常实用了。在本文中,我们...
    99+
    2023-10-10
    load numy 学习笔记
  • Python load numpy,学习笔记来袭,速来围观!
    Python是一种强大的编程语言,而Numpy则是Python中最受欢迎的科学计算库之一。Numpy库为Python提供了一些基本的数值运算,如数组、矩阵和向量的操作。在本文中,我们将学习如何加载Numpy库,以及如何使用它来进行数学计算。...
    99+
    2023-10-10
    load numy 学习笔记
  • 用Git记录PHP和NumPy学习笔记:从入门到精通
    Git是一种十分流行的版本控制工具,它可以帮助我们管理代码、文档、图片等各种文件的版本,同时也是一个可以协作开发的平台。在开发过程中,我们通常需要记录自己的学习笔记,以便日后查阅和复习。本文将介绍如何使用Git来记录PHP和NumPy的学习...
    99+
    2023-10-07
    numy 学习笔记 git
  • ASP 学习笔记:如何利用 numpy 加速 http 请求?
    在现代 Web 开发中,http 请求是不可避免的。然而,对于大量的 http 请求,服务器的响应速度可能会变得很慢。这时,我们可以利用 numpy 库来加速 http 请求。 numpy 是一个高效的 Python 数值计算库,它可以帮...
    99+
    2023-08-29
    学习笔记 numpy http
  • 如何在 Windows 上使用 NumPy 编写 Java 学习笔记?
    Java 是一种非常流行的编程语言,而 NumPy 是 Python 中一个非常有用的科学计算库。尽管 Java 和 Python 之间的差异很大,但是使用 NumPy 可以在 Java 中进行类似于 Python 的科学计算。在本文中,...
    99+
    2023-09-29
    学习笔记 numpy windows
  • 如何高效学习Python load numpy?这份学习笔记告诉你!
    Python是一种功能强大的编程语言,广泛应用于数据处理、人工智能、机器学习等领域。学习Python的过程中,掌握NumPy库的使用非常重要,因为它提供了高效的数组操作和数学函数,是Python科学计算的基石之一。本文将介绍如何高效地学习P...
    99+
    2023-10-10
    load numy 学习笔记
  • Python NumPy实用函数笔记之allclose
    目录numpy 数组及运算创建数组allclose()总结numpy 数组及运算 扩展库 numpy 是 Python 支持科学计算的重要扩展库,是数据分析和科学...
    99+
    2022-11-12
  • 如何使用NPM来管理ASP和NumPy的学习笔记?
    NPM是一个非常有用的工具,它可以让你更加轻松地管理你的JavaScript模块,同时也可以管理其他的开发工具和库。在本文中,我们将介绍如何使用NPM来管理ASP和NumPy的学习笔记。同时,我们也会穿插演示代码来帮助你更好地理解。 ASP...
    99+
    2023-09-23
    numy 学习笔记 npm
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作