【问题标题】:Typecasting a numpy matrix into a string in python将numpy矩阵类型转换为python中的字符串
【发布时间】:2012-04-21 18:24:11
【问题描述】:

我有一个浮点类型的 m*n numpy 矩阵。我将使用 Counter 函数(来自集合)来推导某些矩阵元素组合的计数。在实验中,我发现 Counter() 需要字符串值条目来迭代,而我的 numpy 矩阵默认是浮点类型。

在声明零的 numpy 矩阵时使用 dtype 没有帮助。

所以,我想把 numpymatrix 的每个元素都转换成一个字符串。但是,它不起作用。我该怎么做?

【问题讨论】:

    标签: python matrix numpy counter typecasting-operator


    【解决方案1】:
    xx = np.matrix([[1.2,3.4],[5.4,6.7],[9.8, 5.2]])
    zz = np.matrix([[str(ele) for ele in a] for a in np.array(xx)])
    

    结果:

    >>> xx
    matrix([[ 1.2,  3.4],
            [ 5.4,  6.7],
            [ 9.8,  5.2]])
    >>> zz
    matrix([['1.2', '3.4'],
            ['5.4', '6.7'],
            ['9.8', '5.2']], 
           dtype='|S3')
    

    【讨论】:

      【解决方案2】:

      目前尚不清楚您到底要做什么,但您可能更适合使用 np.histogram(或可能是 np.bincount)根据 numpy 数组推导计数。

      但如果你必须:

      In [45]: a = np.random.normal(size=(3,3))
      
      In [46]: a
      Out[46]: 
      array([[ 0.64552723, -0.4329958 , -1.84342512],
             [ 0.83197804, -0.03053034,  0.22560254],
             [ 0.61356459, -1.60778048, -1.51859134]])
      
      In [47]: a.astype('|S8')
      Out[47]: 
      array([['0.645527', '-0.43299', '-1.84342'],
             ['0.831978', '-0.03053', '0.225602'],
             ['0.613564', '-1.60778', '-1.51859']], 
            dtype='|S8')
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2019-11-24
        • 1970-01-01
        • 2020-05-14
        • 2021-12-29
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2021-06-19
        相关资源
        最近更新 更多