This question already has answers here:
Vectorized NumPy linspace for multiple start and stop values
                                
                                    (4个答案)
                                
                        
                                3年前关闭。
            
                    
在numpy like in this discussion中是否存在元素对序列的矢量化分配?

例如:

xx = np.array([1,2], dtype=object)
expanded = np.arange(xx, xx+2)


而不是循环:

xx = np.array([1,2], dtype=object)
expanded = np.array([np.arange(x, x+2) for x in xx]).flatten()


这将用于将标量启发式方法映射到确定它的矩阵中的相邻单元(例如,具有correlation()运算的峰值重叠的单元的范围)。

最佳答案

像这样?

>>> xx = np.array([3,8,19])
>>> (xx[:,None]+np.arange(2)[None,:]).flatten()
array([ 3,  4,  8,  9, 19, 20])


xx[:,None]操作将长度为n的向量转换为nx1矩阵,而np.arange(2)[None,:])操作将创建一个包含[0., 1.]的长度为1x2的矩阵。使用array broadcasting加在一起得到nx2矩阵,然后将其展平为2n长的向量。

关于python - numpy序列的向量化分配,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/40710390/

10-12 18:15