【问题标题】:Adding a row (header) to a numpy matrix issue using np.vstack in python在 python 中使用 np.vstack 将行(标题)添加到 numpy 矩阵问题
【发布时间】:2013-03-08 08:16:58
【问题描述】:

我有一个像这样的 numpy 矩阵:

>>> matrix
[['M' 'G' 'H' 'H' 'H' 'H' 'H' 'H' 'S' 'H' 'M' 'A' 'A' 'A' 'M']
 ['A' 'A' 'T' 'E' 'D' 'D' 'I' 'R' 'G' 'Q' 'L' 'Q' 'S' 'H' 'G']]

我想在这个矩阵中添加一个新行,然后我会这样做:

length_seqs = matrix.shape[1]
header = np.arange(length_seqs)

matrix_with_header = np.vstack((header,matrix))

但是当我打印这个新矩阵时,它会显示如下:

>>> print matrix_with_header
[['0' '1' '2' '3' '4' '5' '6' '7' '8' '9' '1' '1' '1' '1' '1']
 ['M' 'G' 'H' 'H' 'H' 'H' 'H' 'H' 'S' 'H' 'M' 'A' 'A' 'A' 'M']
 ['A' 'A' 'T' 'E' 'D' 'D' 'I' 'R' 'G' 'Q' 'L' 'Q' 'S' 'H' 'G']]

如您所见,当需要打印多位数字时,它不会并且只显示第一位数字。对此有任何解释和解决方案吗?任何帮助将不胜感激,谢谢。

【问题讨论】:

  • 如果您不将它们用作实际矩阵,您确定要使用matrix 而不是array
  • 后面的代码需要矩阵...但你是对的..如果我只需要打印矩阵,我可以使用数组代替

标签: python matrix numpy


【解决方案1】:

矩阵的dtype 可能是'S1',这意味着所有内容都是1 字符长的字符串。将其更改为 'S2' 以允许更长的字符串。

例如:

In [1]: import numpy as np

In [2]: a = np.array(['hi','hello'])

In [3]: a.dtype
Out[3]: dtype('|S5')

In [4]: a = np.array(['hi','hello'], dtype='S2')

In [5]: a
Out[5]: 
array(['hi', 'he'], 
      dtype='|S2')

【讨论】:

    猜你喜欢
    • 2012-08-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-10-28
    • 1970-01-01
    相关资源
    最近更新 更多