繁体   English   中英

将每个列表元素添加到numpy矩阵的每一行的开头

[英]Add each list element to beginning of each row in numpy matrix

我正在学习如何使用numpy矩阵函数,但遇到了问题。

我有n个整数的列表和n行的矩阵。 我需要将列表中的每个数字添加到矩阵中相应行的开头。

因此,如果我有以下矩阵和列表:

m = np.matrix([[0, 13], [13, 0]])
myList = [10, 11]

我想要的输出是这样的:

newMatrix = [[10, 0, 13],
             [11, 13, 0]]

这是我到目前为止的代码(试图复制此页面上的最后一个示例):

for c in range(len(myList)):
    newMatrix = np.insert(m[c],[0],myList[c])

但这当然只给出了for循环的最后一次迭代([11,13,0])。 我想以某种方式将每一行追加到新矩阵中,但似乎无法弄清楚。

编辑:列表和矩阵的长度将不总是已知的。

如果对numpy矩阵更有经验的人知道更好的方法,我将不胜感激! 提前致谢。

我的解决方案是:

import numpy as np

m = np.matrix([[0, 13], [13, 0]])
myList = [10, 11]
newmatrix = np.insert(m, 0, myList, axis=1)

输出为:

[[10  0 13]
 [11 13  0]]

一种选择是重塑myList ,然后使用np.concatenate()函数:

import numpy as np

np.concatenate((np.array(myList).reshape(len(myList),1), m), axis = 1)
# matrix([[10,  0, 13],
#         [11, 13,  0]])

您也可以这样做:

np.concatenate((np.array(myList)[:, None], m), axis = 1)

# matrix([[10,  0, 13],
#         [11, 13,  0]])

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM