Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/288.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 元组第一维上for循环的向量化_Python_Vectorization - Fatal编程技术网

Python 元组第一维上for循环的向量化

Python 元组第一维上for循环的向量化,python,vectorization,Python,Vectorization,如何最好地将下面的for循环矢量化?它可以矢量化吗? 将结果作为列表、向量或元组本身也可以,这并不是完全相关的 my_tuple = [[-0.125, -0.125, -0.125, -0.125, -0.125, -0.125], [ 0.125, 0.125, 0.125, 0.125 , 0.125 , 0.125], [ 0.25 , 0.25 , 0.25 , 0.25 , 0.25 , 0.25 ]] my_list =

如何最好地将下面的for循环矢量化?它可以矢量化吗? 将结果作为列表、向量或元组本身也可以,这并不是完全相关的

my_tuple = [[-0.125, -0.125, -0.125, -0.125, -0.125, -0.125],
            [ 0.125,  0.125,  0.125, 0.125 , 0.125 , 0.125],
            [ 0.25 ,  0.25 ,  0.25 , 0.25  , 0.25 ,  0.25 ]]
my_list = []
constant = 2
for i in range(len(my_tuple)) :
    my_list.append(my_tuple[i][constant].sum())

注意:我已将
list
tuple
替换为
my\u list
my\u tuple
,以防止隐藏python的内置类
list
tuple

constant = 2
vec_sum = tup_arr[:, constant, :].sum(axis=-1)
print(vec_sum) # Outputs array([ 38,  86, 134, 182, 230])
您可能需要使用
numpy
或其他一些进行矢量化计算的库

在您的例子中,它看起来像是一个2维以上的列表
my_tuple[i][constant]
为您提供所述列表中的一个元素。然后,
.sum()
计算
我的元组[i]
常量
th元素中所有元素的总和

假设您的
my_tuple
是纯数字,看起来是这样的:

my_tuple = (
    [[ 0,  1,  2,  3],
    [ 4,  5,  6,  7],
    [ 8,  9, 10, 11]],
    
    [[12, 13, 14, 15],
    [16, 17, 18, 19],
    [20, 21, 22, 23]],
    
    [[24, 25, 26, 27],
    [28, 29, 30, 31],
    [32, 33, 34, 35]],
    
    [[36, 37, 38, 39],
    [40, 41, 42, 43],
    [44, 45, 46, 47]],

    [[48, 49, 50, 51],
    [52, 53, 54, 55],
    [56, 57, 58, 59]]
)
您可以将其强制转换为
numpy
数组,如下所示:

tup_arr = np.array(my_tuple)
print(tup_arr.shape)
然后,您希望
my_list
的每个元素等于
my_tuple
的每个“块”的
常量
列的和(沿最后一个轴)

constant = 2
vec_sum = tup_arr[:, constant, :].sum(axis=-1)
print(vec_sum) # Outputs array([ 38,  86, 134, 182, 230])

您能否提供一些具有预期输入和输出的样本数据,谢谢,不清楚变量是什么,您将其命名为
tuple
,但它是
tuple
的列表,还是您的问题中包含
tuple
的确切含义。它是一个2维(或更多维)数组吗?看起来像np.cumsum()[如果您将元组转换为np,它将非常有用array@PranavHosangadi: Edited@PWillms您的代码不适用于
my\u tuple
,因为它只是二维的,并且您无法获得2D数组的
[i,j]
第个元素的
.sum()
(元素是单个数字)。我的答案中的
my\u tuple
更有意义吗?