首页 > 解决方案 > Python 创建垂直 Numpy 数组

问题描述

我创建了一个代码,在其中从我的列表中创建一个数组,它必须是垂直的,就像一个向量,问题是使用 reshape 方法我什么也得不到。

import numpy as np

data = [[ 28,    29,    30,    19,    20,    21],
        [ 31,    32,    33,    22,    23,      24],
        [  1,    34,    35,    36,    25,    26],
        [  2,    19,    20,    21,    10,    11],
        [  3,     4,     5,     6,     7,    8 ]]

index = []
for i in range(len(data)):
    index.append([data[i][0], data[i][1], data[i][2],
                    data[i][3], data[i][4], data[i][5]])   
    y = np.array([index[i]])
#    y.reshape(6,1)

这些情况有什么解决办法吗?谢谢你。

我正在寻找这样的东西:

在此处输入图像描述

标签: pythonpython-3.xnumpy-ndarray

解决方案


如果要将每一行视为一列,请通过以下任一方式转置数组:

index = data.T
index = np.transpose(data)
index = data.transpose()
index = np.swapaxes(data, 0, 1)
index = np.moveaxis(data, 1, 0)
...

的每一列index将是一行data。如果您只想一次访问一列,您也可以这样做。例如,要获取原始数组的第 3 行(第 4 行),可以使用以下任何方法:

y = data[3, :]
y = data[3]
y = index[:, 3]

您可以通过将结果显式重塑为一个来从结果中获取列向量:

y = y.reshape(-1, 1)
y = np.reshape(y, (-1, 1))
y = np.expand_dims(y, 1)

请记住,重塑会创建一个新的数组对象,该对象查看与原始数据相同的数据。我知道就地重塑数组的唯一方法是分配给它的shape属性:

y.shape = (y.size, 1)

推荐阅读