python数组每个元素加1_python-根据键转换numpy数组中的每个元素
我认为最好遍历字典,并“一次”在所有行和列中设置值:
>>> a = np.array([[1,2,3],[3,2,1]])
>>> a
array([[1, 2, 3],
[3, 2, 1]])
>>> d = {1 : 11, 2 : 22, 3 : 33}
>>> for k,v in d.iteritems():
... a[a == k] = v
...
>>> a
array([[11, 22, 33],
[33, 22, 11]])
编辑:
尽管它可能不如使用numpy.vectorize的DSM(非常好)的答案那么性感,但我对所有建议方法的测试表明,这种方法(使用@jamylak的建议)实际上要快一些:
from __future__ import division
import numpy as np
a = np.random.randint(1, 5, (500,500))
d = {1 : 11, 2 : 22, 3 : 33, 4 : 44}
def unique_translate(a,d):
u,inv = np.unique(a,return_inverse = True)
return np.array([d[x] for x in u])[inv].reshape(a.shape)
def vec_translate(a, d):
return np.vectorize(d.__getitem__)(a)
def loop_translate(a,d):
n = np.ndarray(a.shape)
for k in d:
n[a == k] = d[k]
return n
def orig_translate(a, d):
new_a = np.empty(a.shape)
for i,row in enumerate(a):
new_a[i,:] = map(d.get, row)
return new_a
if __name__ == '__main__':
import timeit
n_exec = 100
print 'orig'
print timeit.timeit("orig_translate(a,d)",
setup="from __main__ import np,a,d,orig_translate",
number = n_exec) / n_exec
print 'unique'
print timeit.timeit("unique_translate(a,d)",
setup="from __main__ import np,a,d,unique_translate",
number = n_exec) / n_exec
print 'vec'
print timeit.timeit("vec_translate(a,d)",
setup="from __main__ import np,a,d,vec_translate",
number = n_exec) / n_exec
print 'loop'
print timeit.timeit("loop_translate(a,d)",
setup="from __main__ import np,a,d,loop_translate",
number = n_exec) / n_exec
输出:
orig
0.222067718506
unique
0.0472617006302
vec
0.0357889199257
loop
0.0285375618935
python数组每个元素加1_python-根据键转换numpy数组中的每个元素相关推荐
- Python使用numpy函数vsplit垂直(行角度)拆分numpy数组(返回拆分后的numpy数组列表)实战:垂直拆分二维numpy数组、split函数垂直拆分二维numpy数组
Python使用numpy函数vsplit垂直(行角度)拆分numpy数组(返回拆分后的numpy数组列表)实战:垂直拆分二维numpy数组.split函数垂直拆分二维numpy数组 目录
- python 随机选择list或numpy.ndarray中n个元素
python 随机选择list或numpy.ndarray中n个元素 1. 从一个list中随机选取一个元素 random.choice(data) import random data = ['a' ...
- Numpy中使用astype函数转换numpy数组数据类型
Numpy中使用astype函数转换numpy数组数据类型 目录 Numpy中使用astype函数转换numpy数组数据类型 numpy是什么?numpy和list有哪些区别? Numpy中使用ast ...
- python找第二大的数索引_python – 在numpy数组中查找多个值的行索引
方法#1 np.where((X==searched_values[:,None]).all(-1))[1] 方法#2 一种内存有效的方法是将每一行转换为线性索引等价物,然后使用np.in1d,就像这 ...
- php数组根据值合并,PHP根据键值合并数组
我们现在来分析一下在PHP开发过程中,如何合并两个数组,并且将相同键值的元素合并在一起. 示例1 最简单的合并方式$a = [ 1=>'a', 2=>'b', 3=>'c' ]; $ ...
- python numpy 子数组_Python快速转换numpy数组中Nan和Inf的方法实例说明
在使用numpy数组的过程中时常会出现nan或者inf的元素,可能会造成数值计算时的一些错误.这里提供一个numpy库函数的用法,使nan和inf能够最简单地转换成相应的数值. 转载:https:// ...
- python创建字符串数组_如何创建任意长度字符串的numpy数组?
您可以通过创建一个dtype=object数组来执行此操作.如果尝试将长字符串分配给普通numpy数组,它将截断该字符串:>>> a = numpy.array(['apples', ...
- python列表操作——列表嵌套列表,找出嵌套列表中共同的元素
今天在项目中遇到了一个列表嵌套找出共同元素的问题,本来懒得造轮子,直接百度一波,查了一圈不是只有两个list就是使用Intersection这个函数,可能这个功能过于简单了没人写,我试着用Inters ...
- JS笔记(字符串篇)——字符串当中找出元素出现的位置和次数统计字符串中出现最多元素的字符与次数
文章目录 字符串的特性 字符串的不可变性: 常用的几个函数 1,☆indexOf 返回字符所在位置 indexOf('字符') 返回字符所在的位置,如果不存在,则返回-1 indexOf('字符' , ...
最新文章
- Algs4-1.4.12找出两个有序数组的公共元素-方法1
- PCL:关于pcd数据显示乱码
- 网易智慧企业 Node.js 实践(3)| 灰度环境和应用监控
- Spring集成基础知识
- requests模块(代理)篇
- 网络拓扑故障诊断讲解总结
- 商务先锋 多功能一体化网络营销软件
- 电梯控制项目设计报告-第十周
- 商品cta策略_【钜阵CTA策略私募月报】​商品市场大幅上涨 CTA策略表现优异
- CheckMarx源代码安全测试工具
- 2018上半年五款最畅销高速数据采集卡,你get了吗?
- uva1391Astronauts【2-SAT】
- 基于 Amazon Nitro Enclaves 构建安全的可信执行环境
- usercity 小程序_微信小程序API 用户信息 wx.getUserInfo(OBJECT)
- javascript TSP
- 配置MSTP功能示例
- 利用Python进行数据分析(四):数据加载、存储与文件格式
- linux使用usb打印机驱动精灵,Qomo Linux上的“驱动精灵”
- java开发实战经典第二版网课,成功收获美团,小米offer
- GPU虚拟化-Intel的KVMGT、NVIDIA的vGPU、AMD的MaxGPU
热门文章
- Kubernetes 使用 ceph-csi 消费 RBD 作为持久化存储
- 用好这 12 款 Chrome 扩展,让你的「新标签页」变得好看又实用
- java int 127_Integer类型中奇怪的127和128
- android gridview不显示 自定义,Android gridview和自定义标题
- sqlserver sql行专列_sqlserver----记录转载(行转列)、列转行、pivot、unpivot
- 【alibaba-cloud】nacos安装
- 不存在类型或空间名称ConfigurationManager解决办法
- mxnet is not presented
- pytorch 随机打乱
- python 获取文件列表