【问题标题】:Matrix is printing wrong dimensionsMatrix 打印的尺寸错误
【发布时间】:2017-04-23 15:58:34
【问题描述】:

我正在从名为“OneHot”的数据框中读取一列。此列的每一行都有一个值 [1,0] 或 [0,1]。我正在尝试将这些值存储到一个变量中,以便可以在神经网络中使用它。

问题: 当我将值读入变量时,它存储为 (792824, 1) 而不是 (792824, 2)。 792824 是数据框中的行数。我试过重塑,但没有奏效。

这是我的代码:

    input_matrix = np.matrix(df['VectorTweet'].values.tolist())
​
In [157]:

    input_matrix = np.transpose(input_matrix)
    x_inputs = input_matrix.shape
    print x_inputs
(792824, 1)

In [160]:

    output_matrix = np.matrix(df['OneHot'].values.tolist())
    y_inputs = np.transpose(output_matrix)
    print y_outputs.shape
​
(792824, 1)

    print y_outputs[1]

[['[1, 0]']]

附上我的数据框Example of my dataframe的sn-p。

【问题讨论】:

    标签: python pandas dataframe


    【解决方案1】:

    看起来OneHot 中的每个条目都是列表的字符串表示形式。这就是为什么你在转置中只得到一列 - 你已经制作了一个由整数列表组成的字符串的单元素列表。您可以使用ast.literal_eval() 将列表字符串转换为实际列表:

    # OneHot as string of list of ints
    strOneHot = pd.Series(['[0,1]','[1,0]'])
    
    print(strOneHot.values)
    # ['[0,1]' '[1,0]']
    
    import ast
    print(strOneHot.apply(ast.literal_eval).values)
    # [[0, 1] [1, 0]]
    

    FWIW,您可以使用 .T 对 Pandas 系列进行转置,如果这在这里有用的话:

    strOneHot.apply(ast.literal_eval).T
    

    输出:

    0    [0, 1]
    1    [1, 0]
    dtype: object
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-10-31
      • 2018-05-06
      • 1970-01-01
      • 1970-01-01
      • 2023-04-03
      • 2018-06-11
      相关资源
      最近更新 更多