Python无法进行矩阵求和

标签 python list sum

我对 Python 的矩阵制作功能有一些奇怪的问题。

我有以下列表:

Test01 = [11,25,53,19]

Test02 = [2,6,4,8]

我想编写一个代码,将每个元素添加到每个列表中,如下所示:

11 + 2, 11 + 6, 11 + 4, 11+ 8

25 + 2, 25 + 6

等等。等等

下面是我写的代码

for i in test01:

    c = [i+x for x in test02]   
    print(c)

这是我从中得到的结果(也是我想要的)。

[13,17,15,19]

[27,31,29,33]

[55,59,57,61]

[21,25,23,27]

现在我有一个大数据集并进行了一些计算。我选择的前两行进行相同的计算(即相同类型的矩阵)。 然而,Python 只会像这样添加:

New_list01 = 1, 2, 3, 4

New_list02 = a,b,c,d

[[1+a, 2+ b, 3+ c, 4+ d]]

只有一行而不是预期的四行 为什么是这样? 我将列表转换为 numpy (.to_numpy) 并转换为列表 (.tolist())。仍然是相同的(错误的)答案。 我怎样才能仍然进行我想要的计算?

感谢您的帮助! (顺便说一句,如果有一个内置函数可以执行我正在寻找的任务,那就更好了。)

最佳答案

您只需在一行中使用列表理解 即可完成此操作。不确定您到底想要什么输出,因此添加几个选项:

>>> New_list01 = [1, 2, 3, 4]
>>> New_list02 = ['a','b','c','d']

>>> out = [[i+str(j) for i in New_list02] for j in New_list01]
>>> print(out)
[['a1', 'b1', 'c1', 'd1'], 
['a2', 'b2', 'c2', 'd2'], 
['a3', 'b3', 'c3', 'd3'], 
['a4', 'b4', 'c4', 'd4']]

>>> out = [[i+str(j) for i in New_list02] for j in New_list01]
>>> print(out)
[['a1', 'b1', 'c1', 'd1'], 
['a2', 'b2', 'c2', 'd2'], 
['a3', 'b3', 'c3', 'd3'], 
['a4', 'b4', 'c4', 'd4']]

>>> out = [[str(j) + i for i in New_list02] for j in New_list01]
[['1a', '1b', '1c', '1d'], 
['2a', '2b', '2c', '2d'], 
['3a', '3b', '3c', '3d'], 
['4a', '4b', '4c', '4d']]

>>> out = [[str(j) + '+' + i for i in New_list02] for j in New_list01]
[['1+a', '1+b', '1+c', '1+d'], 
['2+a', '2+b', '2+c', '2+d'], 
['3+a', '3+b', '3+c', '3+d'], 
['4+a', '4+b', '4+c', '4+d']]

>>> out = [[i + '+' + str(j) for i in New_list02] for j in New_list01]
[['a+1', 'b+1', 'c+1', 'd+1'], 
['a+2', 'b+2', 'c+2', 'd+2'], 
['a+3', 'b+3', 'c+3', 'd+3'], 
['a+4', 'b+4', 'c+4', 'd+4']]

>>> # Filtering out one row
>>> out[0] 
['a+1', 'b+1', 'c+1', 'd+1']

如果你想要一个flattened(一个列表)输出:

>>>  just remove inner []
>>> out = [i+ '+' + str(j) for i in New_list02 for j in New_list01]
>>> print(out)
['a+1', 'a+2', 'a+3', 'a+4', 'b+1', 'b+2', 'b+3', 'b+4', 'c+1', 'c+2', 'c+3', 'c+4', 'd+1', 'd+2', 'd+3', 'd+4']

>>> out = [i + str(j) for i in New_list02 for j in New_list01]
>>> print(out)
['a1', 'a2', 'a3', 'a4', 'b1', 'b2', 'b3', 'b4', 'c1', 'c2', 'c3', 'c4', 'd1', 'd2', 'd3', 'd4']

对于您的初始测试用例:

>>> out = [[i+j for i in Test02] for j in Test01]
>>> print(out)
[[13, 17, 15, 19], 
[27, 31, 29, 33], 
[55, 59, 57, 61], 
[21, 25, 23, 27]]

>>> #first row
>>> print(out[0])
[13, 17, 15, 19]

>>> out = [[i+j for i in Test02] for j in Test01]
[13, 27, 55, 21, 17, 31, 59, 25, 15, 29, 57, 23, 19, 33, 61, 27]

关于Python无法进行矩阵求和,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64093065/

相关文章:

Python:如何统计实例变量的访问次数

python - 如何强制 py2app 以 32 位模式运行应用程序

python - Cartopy map 可视化错误: unknown projection

python - 一个列表中的两个总和

javascript - 多维数组之和javascript

python - 如何编写适当的装饰器来改变类

c++ - 在所有节点作为结构 C++ 的排序列表中进行二进制搜索

list - Prolog 中的复合术语和列表

仅具有唯一 ID 的 Mysql SUM CASE

php - MySQL 使用多个 WHERE 子句选择 AVG