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) 可以是多维的. 我们主要 ...
随机推荐
- sbt 学习笔记(1)sbt安装和交互式界面使用
下载sbt: http://www.scala-sbt.org/download.html 解压zip文件F:\sbt-0.13.15 配置环境变量 如果需要可以修改F:\sbt-0.13.15\sb ...
- js对数组、对象的深拷贝、复制
基本类型的数据是存放在栈内存中的,而引用类型的数据是存放在堆内存中的 基本类型:Number Boolean undefined String Null 引用类型:Object Function js ...
- PCA 算法核心:高维度向量向低维度投影
Principal Component Analysis:主成分分析 步骤 5 步: 1.去平均值,也就是将向量中每一项都减去各自向量的平均值 2.计算矩阵的方差,协方差,特征值, 3,.把特征值从大 ...
- Spring Boot2 系列教程(十一)Spring Boot 中的静态资源配置
当我们使用 SpringMVC 框架时,静态资源会被拦截,需要添加额外配置,之前老有小伙伴在微信上问松哥 Spring Boot 中的静态资源加载问题:"松哥,我的 HTML 页面好像没有样 ...
- Chrome插件开发(一)
作为一个开发人员,我们在日常工作中肯定会用到 Chrome 浏览器,同时也会用到谷歌的一些插件,比如 Tampermonkey,AdBlock等,在之前的文章本人还是用了 Tampermonkey,传 ...
- SQL SERVER数据库多条件查询
例如:查询挂号超500的数据select CONVERT(VARCHAR(10),DGH,23),COUNT(*) from yxhis2017..VTBMZGHMX2017 where bth=0 ...
- 为什么那么多自学JAVA的后来都放弃了?总结起来就这些原因
目前信息化产业发展势头很好,互联网就成为了很多普通人想要涉及的行业,因为相比于传统行业,互联网行业涨薪幅度大,机会也多,所以就会大批的人想要转行来学习Java开发. 目前来讲市场上需要的Java人员非 ...
- Cocos2d-x 学习笔记(15.2) EventDispatcher 事件分发机制 dispatchEvent(event)
1. 事件分发方法 EventDispatcher::dispatchEvent(Event* event) 首先通过_isEnabled标志判断事件分发是否启用. 执行 updateDirtyFla ...
- SpringMVC4拦截器配置遇到的坑
目的:对get请求添加token验证(若为post请求可通过RequestBodyAdvice实现). 情景:因为有api版本管理的需求,重写了WebMvcConfigurationSupport类的 ...
- 为程序员节日献礼--2019中国.NET开发者峰会主题内容发布
2019年10月24日,组委会正式发布了China .NET Conf 2019中国 .NET 开发者峰会的主题内容. 2014年微软组织并成立.NET基金会,微软在成为主要的开源参与者的道路上又前进 ...