将两个列表逐元素连接到 n x n 矩阵
Concatenate two lists elementwise to an n x n matrix
我有两个包含字符串的列表,我想将它们按元素连接成一个 n x n 矩阵。我试过下面的代码,但这只给了我 n x 1 个列表。
row = ['a','b','c']
col = ['a','b','c']
matrix = map(''.join, zip(row,col))
预期的输出将是这样的矩阵:
[['aa','ab','ac'],
['ba','bb','bc'],
['ca','cb','cc']])
是否有使用常规 python 或 numpy 来实现此目的的解决方案?
常规 Python - 使用字符串连接和列表理解:
matrix = [[x + y for x in row] for y in col]
要符合 NumPy 样式和所需的输出,请使用:
np.c_[matrix].T
为了精确的期望输出
row = ['a','b','c']
col = ['a','b','c']
result = [[y + x for x in row] for y in col]
print(result)
如果你真的想使用 NumPy,你可以利用 meshgrid
来做这样的事情:
row_mat, col_mat = numpy.meshgrid(row, col)
concat_mat = numpy.core.defchararray.add(col_mat, row_mat)
对于 numpy 方法:
import itertools
np.array([''.join(i) for i in list(itertools.product(row,col))]).reshape(3,3)
# array([['aa', 'ab', 'ac'],
# ['ba', 'bb', 'bc'],
# ['ca', 'cb', 'cc']], dtype='<U2')
这里是 numpy
一个班轮:
np.add.outer(row,col,dtype="O")
# array([['aa', 'ab', 'ac'],
# ['ba', 'bb', 'bc'],
# ['ca', 'cb', 'cc']], dtype=object)
利用 +
对 python 字符串的定义(不是 numpy 字符串数据类型):
In [140]: row=np.array(['a','b','c'],object)
In [141]: row[:,None]+row
Out[141]:
array([['aa', 'ab', 'ac'],
['ba', 'bb', 'bc'],
['ca', 'cb', 'cc']], dtype=object)
我有两个包含字符串的列表,我想将它们按元素连接成一个 n x n 矩阵。我试过下面的代码,但这只给了我 n x 1 个列表。
row = ['a','b','c']
col = ['a','b','c']
matrix = map(''.join, zip(row,col))
预期的输出将是这样的矩阵:
[['aa','ab','ac'],
['ba','bb','bc'],
['ca','cb','cc']])
是否有使用常规 python 或 numpy 来实现此目的的解决方案?
常规 Python - 使用字符串连接和列表理解:
matrix = [[x + y for x in row] for y in col]
要符合 NumPy 样式和所需的输出,请使用:
np.c_[matrix].T
为了精确的期望输出
row = ['a','b','c']
col = ['a','b','c']
result = [[y + x for x in row] for y in col]
print(result)
如果你真的想使用 NumPy,你可以利用 meshgrid
来做这样的事情:
row_mat, col_mat = numpy.meshgrid(row, col)
concat_mat = numpy.core.defchararray.add(col_mat, row_mat)
对于 numpy 方法:
import itertools
np.array([''.join(i) for i in list(itertools.product(row,col))]).reshape(3,3)
# array([['aa', 'ab', 'ac'],
# ['ba', 'bb', 'bc'],
# ['ca', 'cb', 'cc']], dtype='<U2')
这里是 numpy
一个班轮:
np.add.outer(row,col,dtype="O")
# array([['aa', 'ab', 'ac'],
# ['ba', 'bb', 'bc'],
# ['ca', 'cb', 'cc']], dtype=object)
利用 +
对 python 字符串的定义(不是 numpy 字符串数据类型):
In [140]: row=np.array(['a','b','c'],object)
In [141]: row[:,None]+row
Out[141]:
array([['aa', 'ab', 'ac'],
['ba', 'bb', 'bc'],
['ca', 'cb', 'cc']], dtype=object)