numpy.array 中的运算
简单运算
现在有有个需求,给定一个数组,让数组中每一个数乘以2,怎么做呢
n = 10
L = [i for i in range(n)]
L # [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
2 * L # [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
A = []
for e in L:
A.append(2*e)
A # [0, 2, 4, 6, 8, 10, 12, 14, 16, 18]
L = np.arange(n)
2 * L
# array([ 0, 2, 4, 6, 8, 10, 12, 14, 16, 18])
各种写法性能比较
n = 1000000
L = [i for i in range(n)] %%time
A = []
for e in L:
A.append(2*e)
"""
CPU times: user 253 ms, sys: 30 ms, total: 283 ms
Wall time: 303 ms
""" %%time
A = [2*e for e in L]
"""
CPU times: user 93.6 ms, sys: 25.8 ms, total: 119 ms
Wall time: 128 ms
""" L = np.arange(n)
%%time
A = np.array(2*e for e in L)
"""
CPU times: user 15.1 ms, sys: 8.97 ms, total: 24.1 ms
Wall time: 24.8 ms
""" %%time
A = 2 * L
"""
CPU times: user 15.1 ms, sys: 8.97 ms, total: 24.1 ms
Wall time: 24.8 ms
"""
NumPy’s UFuncs (Universal Functions)
全称通用函数(universal function),是一种能够对数组中所有元素进行操作的函数
- 四则运算:加(+)、减(-)、乘(*)、除(/)、幂(**):数组间的四则运算表示对每个数组中的元素分别进行四则运算,所以形状必须相同
- 比较运算:>、<、==、>=、<=、!= :比较运算返回的结果是一个布尔数组,每个元素为每个数组对应元素的比较结果。
- 逻辑运算:np.any函数表示逻辑“or”,np.all函数表示逻辑“and” :运算结果返回布尔值
X = np.arange(1, 16).reshape((3, 5))
"""
array([[ 1, 2, 3, 4, 5],
[ 6, 7, 8, 9, 10],
[11, 12, 13, 14, 15]])
"""
# 每个元素 + 1
X + 1
# 每个元素 - 1
X - 1
# 每个元素 * 2
X * 2
# 每个元素 / 2
X / 2
# 每个元素的平方
X ** 2
# 求余
X % 2
# 倒数
1 / X
还有下面等一系列方法
np.abs(X)
np.sin(X)
np.cos(X)
np.tan(X)
np.arctan(X)
np.exp(X)
np.exp2(X)
np.power(3, X)
np.log(X)
np.log2(X)
np.log10(X)
矩阵间运算
A = np.arange(4).reshape(2, 2)
B = np.full((2, 2), 10)
A + B
A - B
# ×乘,每个对应位置相乘
A * B
# .乘,C11 = A的第一行*B的第一列,先乘后加
A.dot(B)
# 转置
A.T
# 返回自身的共轭转置
A.H
# 返回自身的逆矩阵
A.I
# 返回自身数据的2维数组的一个视图
A.A
向量和矩阵的运算
加法
A = np.arange(4).reshape(2, 2)
v = np.array([1, 2])
v + A
"""
array([[1, 3],
[3, 5]])
"""
乘法
v * A
"""
array([[0, 2],
[2, 6]])
"""
v.dot(A) # array([4, 7])
A.dot(v) # array([2, 8])
矩阵的逆与伪逆
矩阵的逆
B = np.linalg.inv(A)
A.dot(B)
"""
array([[1., 0.],
[0., 1.]])
"""
矩阵的伪逆
X = np.arange(16).reshape((2, 8))
pinvX = np.linalg.pinv(X)
X.dot(pinvX)
"""
array([[ 1.00000000e+00, -2.77555756e-16],
[ 1.69309011e-15, 1.00000000e+00]])
"""
矩阵的伪逆又被称为“广义逆矩阵”
Numpy 中arg运算
x = np.random.normal(0, 1, 1000000)
np.argmin(x) #获取最小值的下标
np.argmax(x)
numpy.array 中的运算的更多相关文章
- python 中 numpy array 中的维度
简介 numpy 创建的数组都有一个shape属性,它是一个元组,返回各个维度的维数.有时候我们可能需要知道某一维的特定维数. 二维情况 >>> import numpy as np ...
- 第四十篇 入门机器学习——Numpy.array的基本操作——向量及矩阵的运算
No.1. Numpy.array相较于Python原生List的性能优势 No.2. 将向量或矩阵中的每个元素 + 1 No.2. 将向量或矩阵中的所有元素 - 1 No.3. 将向量或矩阵中的所有 ...
- 对Numpy数组按axis运算的理解
Python的Numpy数组运算中,有时会出现按axis进行运算的情况,如 >>> x = np.array([[1, 1], [2, 2]]) >>> x arr ...
- Python Numpy Array
Numpy 是Python中数据科学中的核心组件,它给我们提供了多维度高性能数组对象. Arrays Numpy.array dtype 变量 dtype变量,用来存放数据类型, 创建数组时可以同 ...
- python的numpy.array
为什么要用numpy Python中提供了list容器,可以当作数组使用.但列表中的元素可以是任何对象,因此列表中保存的是对象的指针,这样一来,为了保存一个简单的列表[1,2,3].就需要三个指针和三 ...
- 【笔记】numpy.array的常用基本运算以及对数据的操作
numpy.array的基本运算以及对数据的操作 设置一个问题,例如 这种只需要基本的运算就可以实现 类似的 numpy对向量的运算进行了优化,速度是相当快的,这种被称为universal funct ...
- 【python】numpy array特殊数据统一处理
array中的某些数据坏掉,想要统一处理,找到了这个方法,做个笔记. 比如,把数组中所有小于0的数字置为0 import numpy as np t = np.array([-2, -1, 0, 1, ...
- python numpy array 的一些问题
1 将list转换成array 如果list的嵌套数组是不规整的,如 a = [[1,2], [3,4,5]] 则a = numpy.array(a)之后 a的type是ndarray,但是a中得元素 ...
- numpy.array
关于python中的二维数组,主要有list和numpy.array两种. 好吧,其实还有matrices,但它必须是2维的,而numpy arrays (ndarrays) 可以是多维的. 我们主要 ...
随机推荐
- Java诊断利器Arthas
1 简介 Arthas 是Alibaba开源的Java诊断工具,深受开发者喜爱 当你遇到以下类似问题而束手无策时,Arthas可以帮助你解决: 这个类从哪个 jar 包加载的?为什么会报各种类相关的 ...
- js 验证数据类型的4中方法
1.typeof 可以检验基本数据类型 但是引用数据类型(复杂数据类型)无用: 总结 : typeof 无法识别引用数据类型 包括 bull; 2.instanceof是一个二元运算符,左操作数 ...
- Go语言入门教程(十一)
原创: IT干货栈 Hello,各位小伙伴大家好,我是小栈君,昨天讲了关于go语言的函数的定义和自定函数的部分种类,我们今天接着上期所讲的内容继续进行分享. 一.函数之无参有返回值 有返回值的函数,必 ...
- Java-Thread00之多线程知识准备
------  ...
- Fcitx使用搜狗词库与皮肤
在 \(\text{Linux}\) 环境下,\(\text{Fcitx}\) 确实是最好用的开源输入法之一.然而 \(\text{Windows}\) 下的巨头输入法 -- 搜狗,对 \(\text ...
- Python3程序设计指南:01 过程型程序设计快速入门
大家好,从本文开始将逐渐更新Python教程指南系列,为什么叫指南呢?因为本系列是参考<Python3程序设计指南>,也是作者的学习笔记,希望与读者共同学习. .py文件中的每个估计都是顺 ...
- ini 文件操作指南
今天总结一篇工具箱文章. ini 类型文件通常作为程序的初始化文件.不同于我们常见的配置文件通篇 key-value 的键值对形式,ini 文件在键值对的基础之上还有分类节点,比如我们常见的 Mysq ...
- RRiBbit,一个事件总线.基于spring配置不同服务通信!
1.何为RRiBbit? *一种开源事件总线技术,能够让模块(组件)之间双向通讯,也被称为请求相应总线(request-response-bus),使用简单,相对其他框架来说,RRiBbit只需要加个 ...
- 域渗透基础之Kerberos认证协议
本来昨晚就该总结整理,又拖到今天早上..6点起来赶可还行 0x01 Kerberos前言 Kerberos 是一种由 MIT(麻省理工大学)提出的一种网络身份验证协议.它旨在通过使用密钥加密技术为客 ...
- thinkphp5框架笔记(ing)
重新整理下学习tp5手册的笔记.自己再好好看一次tp5的开发手册,学到哪里记到哪里. 0x01 安装 Composer安装 ThinkPHP5支持使用Composer安装 curl -sS https ...