1

float 型の am*n numpy 行列があります。Counter 関数を (コレクションから) 使用して、行列要素の特定の組み合わせの数を取得します。実験の結果、Counter() を反復するには文字列値のエントリが必要であることがわかりましたが、私のnumpy マトリックスはデフォルトで float 型でした。

numpy のゼロ行列を宣言しているときに dtype を使用しても役に立ちません。

そこで、numpymatrix の各要素を文字列に変換することを考えました。しかし、それは機能していません。どうすればいいのですか?

4

2 に答える 2

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')
于 2012-04-21T19:36:09.283 に答える
1

何をしようとしているのか正確には不明ですが、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')
于 2012-04-21T18:43:29.613 に答える