python 将列表转换为矩阵并获取值

标签 python list matrix nested nested-lists

我对Python还很陌生。我有一个嵌套列表,其中包含 16 个 1 和 0。

list([name_of_matrix],[1234567812345678], [another_name],[1234....])

列表中的每个数字项[12345678....]代表一个 4x4 矩阵,如下所示:

1234
5678
1234
5678

我的目标是通过[row, col]访问数字。例如[2,3]将是第2行,第3列,即7。我应该如何转换列表为了达成这个?提前谢谢了。

最佳答案

首先,您应该将嵌套的 list 分解为 dict,其中键是表示名称的字符串,值是整数:

nested_list = [['first'], [1234567812345678], ['second'], [1234432109877890]]
raw_dict = {k[0]: v[0] for k, v in zip(nested_list[::2], nested_list[1::2])}

现在,我们希望将每个 16 位整数转变成可以更好地表示矩阵的东西。 numpy 是一种方法,但现在让我们坚持使用基本的 Python。

请注意,如果我们将每个整数转换为字符串,则每个 4 字符 block 将代表矩阵的一行。因此:

def to_matrix(i):
    string = str(i)
    return [[int(element) for element in string[i:i + 4]] for i in range(0, 16, 4)]

matrix_dict = {k: to_matrix(v) for k, v in raw_dict.items()}

现在,我们的 dict 具有代表矩阵的嵌套 list 值:

print(matrix_dict)

输出:

{'first': [[1, 2, 3, 4], [5, 6, 7, 8], [1, 2, 3, 4], [5, 6, 7, 8]], 'second': [[1, 2, 3, 4], [4, 3, 2, 1], [0, 9, 8, 7], [7, 8, 9, 0]]}

我们可以通过链式索引访问任意元素:

print(matrix_dict['first'][3][2])

输出:

7

编辑:如果我们不想区分列表,那么我们可以这样做:

matrices = [to_matrix(element[0]) for element in nested_list if isinstance(element[0], int)]

关于python 将列表转换为矩阵并获取值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55472931/

相关文章:

python - 如何在python中计算大矩阵(平均滤波器)每个坐标的有效局部平均值

python - PyCrypto 在 OSX Mavericks 中不工作

python - 列表索引超出范围(使用 while 循环)

c# - 为什么在列表上调用 Sort(IComparer) 时会出现 System.ArgumentException?

计算逆矩阵?

c - 为什么在尝试用 c 打印矩阵时会出现此错误?

python - django rest 框架中的自定义 throttle 响应

python - 用 Pandas 编写单个 CSV header

python - 如何使用协程在两个列表之间交替打印?

python - 具有元组键和两个列表作为值的字典,其中一个值仅添加到列表之一