将矩阵中的所有值列为 1 个完整列表

listing all the values inside a matrix into a 1 whole list

如何将矩阵 ckpot_p_shell_matrix 的所有值放入 1 个完整列表中?我想要列表中的值,这样我就可以绘制这些值的直方图。

ckpot_p_shell_matrix 是一个 numpy.ndarray 二维矩阵,其形状为 (28, 108),包含 0 ~ 10 之间的值。

>>> type(ckpot_p_shell_matrix)
    numpy.ndarray
>>> ckpot_p_shell_matrix.shape
    (28, 108)
>>> ckpot_p_shell_matrix
    array([[0.2407545, 0.3681921, 0.5176657, ..., 2.9999998, 1.5      ,
        2.9316723],
       [0.       , 0.       , 0.       , ..., 0.       , 0.       ,
        0.       ],
       [0.       , 0.       , 0.       , ..., 0.       , 0.       ,
        0.       ],
       ...,
       [3.5468006, 2.0326045, 2.42928  , ..., 4.5      , 5.25     ,
        3.5797157],
       [0.7088   , 1.5522   , 1.0474   , ..., 4.       , 3.       ,
        3.95444  ],
       [5.2912   , 4.4478   , 4.9526   , ..., 6.       , 7.       ,
        6.04556  ]])

使用 numpy .flatten()

import numpy as np

ckpot_p_shell_matrix = np.array([[0.2407545, 0.3681921, 0.5176657, ..., 2.9999998, 1.5      ,
        2.9316723],
       [0.       , 0.       , 0.       , ..., 0.       , 0.       ,
        0.       ],
       [0.       , 0.       , 0.       , ..., 0.       , 0.       ,
        0.       ],
       ...,
       [3.5468006, 2.0326045, 2.42928  , ..., 4.5      , 5.25     ,
        3.5797157],
       [0.7088   , 1.5522   , 1.0474   , ..., 4.       , 3.       ,
        3.95444  ],
       [5.2912   , 4.4478   , 4.9526   , ..., 6.       , 7.       ,
        6.04556  ]])
print(ckpot_p_shell_matrix.flatten())

输出:

np.array([[0.2407545, 0.3681921, 0.5176657, ..., 2.9999998, 1.5      ,

您可以使用 .flatten() 方法,然后使用内置 list() 函数

将其转换为 list
result=list(ckpot_p_shell_matrix.flatten())

如果您尝试打印它,缓冲区将只在某个点停止而不显示其余部分。

可以使用上面提到的flatten(),或者reshape(-1):

a = np.array([
    [1, 2, 3],
    [4, 5, 6],
    [7, 8, 9]
])

print(a.flatten())
print(a.reshape(-1))

输出:

[1 2 3 4 5 6 7 8 9]
[1 2 3 4 5 6 7 8 9]