【python获取元素在数组中索引号的方法】教程文章相关的互联网学习教程文章

如何规范化python中的二维numpy数组更简洁?【代码】

给出3次3 numpy阵列a = numpy.arange(0,27,3).reshape(3,3)# array([[ 0, 3, 6], # [ 9, 12, 15], # [18, 21, 24]])为了规范化我想到的二维数组的行row_sums = a.sum(axis=1) # array([ 9, 36, 63]) new_matrix = numpy.zeros((3,3)) for i, (row, row_sum) in enumerate(zip(a, row_sums)):new_matrix[i,:] = row / row_sum必须有更好的方法,不是吗? 也许要澄清:通过归一化我的意思是,每行的总和必须是1.但我认...

python – 将数组排序到索引数组指定的bin中的最有效方法?【代码】

任务示例:data = np.array([1, 2, 3, 4, 5, 6, 7, 8, 9]) idx = np.array([2, 0, 1, 1, 2, 0, 1, 1, 2])预期结果:binned = np.array([2, 6, 3, 4, 7, 8, 1, 5, 9])约束: >应该快.>应为O(n k),其中n是数据长度,k是bin的数量.>应该是稳定的,即保留在箱内的订单. 明显的解决方案data[np.argsort(idx, kind='stable')]是O(n log n). O(n k)解决方案def sort_to_bins(idx, data, mx=-1):if mx==-1:mx = idx.max() + 1cnts = np.zero...

python – 使用重复索引递增Numpy数组【代码】

我有一个Numpy数组和一个索引列表,其值我想增加一个.此列表可能包含重复的索引,我希望增量与每个索引的重复次数一致.没有重复,命令很简单:a=np.zeros(6).astype('int') b=[3,2,5] a[b]+=1有了重复,我想出了以下方法.b=[3,2,5,2] # indices to increment by one each replicate bbins=np.bincount(b) b.sort() # sort b because bincount is sorted incr=bbins[np.nonzero(bbins)] #...

python – 是否有可能对NumPy数组进行递归计算,其中每个元素依赖于前一个元素?【代码】

T(i) = Tm(i) + (T(i-1)-Tm(i))**(-tau(i))Tm和tau是具有先前已经计算的相同长度的NumPy向量,并且期望创建新向量T.仅包括i以指示期望的元素索引. 这种情况需要for循环吗?解决方法:您可能认为这会起作用:import numpy as np n = len(Tm) t = np.empty(n)t[0] = 0 # or whatever the initial condition is t[1:] = Tm[1:] + (t[0:n-1] - Tm[1:])**(-tau[1:])但事实并非如此:你实际上不能以这种方式进行numpy的递归(因为numpy会计...

python – 二进制numpy数组到整数列表?【代码】

我有一个二进制数组,我想将它转换为整数列表,其中每个int是数组的一行. 例如:from numpy import * a = array([[1, 1, 0, 0], [0, 1, 0, 0], [0, 1, 1, 1], [1, 1, 1, 1]])我想将a转换为[12,4,7,15].解决方法:我曾经问了类似的问题here.这是my answer,适合你的问题:def bool2int(x):y = 0for i,j in enumerate(x):y += j<<ireturn yIn [20]: a Out[20]: array([[1, 1, 0, 0],[0, 1, 0, 0],[0, 1, 1, 1],[1, 1, 1, 1]])In [21]: [...

计算Python数组中的连续正值【代码】

我试图计算股票收益数据的连续上涨天数 – 所以如果正日是1而负数是0,那么列表y = [0,0,1,1,1,0,0,1,0, 1,1]应返回z = [0,0,1,2,3,0,0,1,0,1,2]. 我已经找到了一个在代码行数方面很整洁的解决方案,但速度非常慢:import pandas y=pandas.Series([0,0,1,1,1,0,0,1,0,1,1]) def f(x):return reduce(lambda a,b:reduce((a+b)*b,x) z=pandas.expanding_apply(y,f)我猜我在整个列表中循环太多次了.有没有一种很好的Pythonic方法可以实现...

python – 为什么NumPy数组如此之快?

我刚刚改变了一个我正在编写的程序,将我的数据保存为numpy数组,因为我遇到了性能问题,而且差别很大.它最初运行需要30分钟,现在需要2.5秒! 我想知道它是如何做到的.我认为这是因为它消除了for循环的需要但超出了我的难度.解决方法:Numpy数组是密集的同类型数组.相比之下,Python列表是指向对象的指针数组,即使它们都属于同一类型.所以,你获得了locality of reference的好处. 此外,许多Numpy操作在C中实现,避免了Python中的循环,指针...

python – 获取多维numpy数组中最大项的位置【代码】

如何才能获得多维numpy数组中最大项的位置?解决方法:argmax()方法应该有所帮助. 更新 (阅读评论后)我相信argmax()方法也适用于多维数组.链接的文档提供了一个示例:>>> a = array([[10,50,30],[60,20,40]]) >>> maxindex = a.argmax() >>> maxindex 3更新2 (感谢KennyTM的评论)您可以使用unravel_index(a.argmax(),a.shape)将索引作为元组获取:>>> from numpy import unravel_index >>> unravel_index(a.argmax(), a.shape) (1, ...

python – 根据键转换numpy数组中的每个元素【代码】

我试图根据给定的键翻译numpy.array的每个元素: 例如:a = np.array([[1,2,3],[3,2,4]])my_dict = {1:23, 2:34, 3:36, 4:45}我想得到:array([[ 23., 34., 36.],[ 36., 34., 45.]])我可以看到如何使用循环:def loop_translate(a, my_dict):new_a = np.empty(a.shape)for i,row in enumerate(a):new_a[i,:] = map(my_dict.get, row)return new_a是否有更高效和/或纯粹的numpy方式? 编辑: 我计时了,DSM提出的np.vectorize方法...

python – 在numpy数组中查找相同值的序列长度(运行长度编码)【代码】

在pylab程序中(也可能是一个matlab程序)我有一个代表距离的numpy数组:d [t]是时间t的距离(我的数据的时间跨度是len(d)时间单位) . 我感兴趣的事件是当距离低于某个阈值时,我想计算这些事件的持续时间.很容易得到一个b = d <阈值的布尔数组,问题归结为计算b中纯真词的长度序列.但我不知道如何有效地做到这一点(即使用numpy原语),并且我使用数组并进行手动更改检测(即当值从False变为True时初始化计数器,只要值为True就增加计数器,当...

python – 有效地将不均匀的列表列表转换为最小的包含用nan填充的数组【代码】

考虑列表清单ll = [[1, 2, 3], [1, 2]]如果我将其转换为np.array,我将获得一维对象数组,其中第一个位置为[1,2,3],第二个位置为[1,2].print(np.array(l))[[1, 2, 3] [1, 2]]我想要这个print(np.array([[1, 2, 3], [1, 2, np.nan]]))[[ 1. 2. 3.][ 1. 2. nan]]我可以通过循环来做到这一点,但我们都知道不受欢迎的循环是多少def box_pir(l):lengths = [i for i in map(len, l)]shape = (len(l), max(lengths))a = np.full(sh...

python – 查找另一个数组中一个数组的匹配索引【代码】

我有两个numpy数组,A和B.一个包含唯一值,B是一个A的子数组.现在我正在寻找一种方法来获得B中B值的索引. 例如:A = np.array([1,2,3,4,5,6,7,8,9,10]) B = np.array([1,7,10]) # I need a function fun() that: fun(A,B) >> 0,6,9解决方法:你可以使用np.in1d和np.nonzero – np.nonzero(np.in1d(A,B))[0]您也可以使用np.searchsorted,如果您关心维护订单 – np.searchsorted(A,B)对于一般情况,当A& B是未排序的数组,你可以在np.sea...

python – 始终创建相同的随机numpy数组【代码】

我正在等待另一个开发人员完成一段代码,该代码将返回一个形状为np的数组(100,2000),其值为-1,0或1. 与此同时,我想随机创建一个具有相同特征的数组,这样我就可以在开发和测试方面领先一步.问题是我希望这个随机创建的数组每次都是相同的,所以我不会测试每次重新运行我的进程时不断更改其值的数组. 我可以像这样创建我的数组,但有没有办法创建它,以便每次都相同.我可以腌制物体并解开它,但想知道是否还有另一种方法.r = np.random.ra...

python查找数组中出现次数最多的元素【代码】【图】

方法1-np.argmax(np.bincount()) 看一个例子array = [0,1,2,2,3,4,4,4,5,6] print(np.bincount(array)) print(np.argmax(np.bincount(array)))#[1 1 2 1 3 1 1] #4这里用到了两个函数,np.argmax和np.bincount,第一个很常见,就是返回数组中最大值对应的下标,np.bincount可以通过上面的例子理解:首先找到数组最大值max,然后返回0~max的各个数字出现的次数,在上例中,0出现了1次,1出现了1次,2出现了2次...以此类推。 为什么...

python – 在numpy数组中查找最接近的值【代码】

有一种numpy-thonic方式,例如函数,找到数组中最近的值? 例:np.find_nearest( array, value )解决方法: import numpy as np def find_nearest(array, value):array = np.asarray(array)idx = (np.abs(array - value)).argmin()return array[idx]array = np.random.random(10) print(array) # [ 0.21069679 0.61290182 0.63425412 0.84635244 0.91599191 0.00213826 # 0.17104965 0.56874386 0.57319379 0.28719469]valu...

元素 - 相关标签