Python 元组第一维上for循环的向量化
如何最好地将下面的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 =
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
更有意义吗?