numpy 打印数组列表的列

mgdq6dx1  于 2022-11-10  发布在  其他
关注(0)|答案(2)|浏览(165)

我有以下清单

import numpy as np
Y = [np.array([[1, 4, 7],
        [2, 5, 8]]),
 np.array([[10, 14, 18],
        [11, 15, 19],
        [12, 16, 20],
        [13, 17, 21]]),
 np.array([[22, 26, 31],
        [24, 28, 33],
        [26, 30, 35]])]

我想遍历并打印Y中所有数组中的列。
我不知道如何访问Y的列。例如,运行Y[:,0]

[[1]
 [2]]

相反,它会给出以下错误

TypeError: list indices must be integers or slices, not tuple

我想打印Y中所有数组的所有列,而不仅仅是第一个数组的第一列。

2skhul33

2skhul331#

这有帮助吗?

for i in range(3):
    l = Y[i]
    for j in range(len(np.transpose(l))):
        print(l[:,j])

这为您提供了:

[1 2]
[4 5]
[7 8]
[10 11 12 13]
[14 15 16 17]
[18 19 20 21]
[22 24 26]
[26 28 30]
[31 33 35]
w3nuxt5m

w3nuxt5m2#

您可以使用pandas DataFrame作为更高级别的结构,而不是列表:

import pandas as pd
df = pd.concat(map(pd.DataFrame, Y), keys=range(len(Y)))

df.loc[(0,), 0]

输出:

0    1
1    2
Name: 0, dtype: int64

df

0   1   2
0 0   1   4   7
  1   2   5   8
1 0  10  14  18
  1  11  15  19
  2  12  16  20
  3  13  17  21
2 0  22  26  31
  1  24  28  33
  2  26  30  35

如果您不需要第二级索引,则可以选择其他选项:

df2 = pd.concat(map(pd.DataFrame, Y), keys=range(len(Y))).droplevel(1)

df2.loc[0, 0]

输出:

0    1
0    2
Name: 0, dtype: int64

df2

0   1   2
0   1   4   7
0   2   5   8
1  10  14  18
1  11  15  19
1  12  16  20
1  13  17  21
2  22  26  31
2  24  28  33
2  26  30  35

相关问题