2016-05-08 12 views
1

numpy.hstack()関数に問題があります。私は3と同じnumpyの配列を持っていると私はhstack()を使用してそれらを結合したいので、私はこれらのnumpyの配列からタプルを作成し、numpy.hstack(タプル)Numpy.hstack()は、結果の配列に行末を追加します。

v, n, t // rows example [ 0.83468097 0.50044298 0.229835 ] 

tuple_stack = (v, n, t) 

stack = numpy.hstack(tuple_stack) 

が、結果として、私はndarrayだ、行のルックスを使用しますこの1

[0.091698 0.69801199 0.88459301 0.83468097 0.50044298 0.229835 \ nは0.429932 0.989021 0]

ように私は、OpenGLでのinit VBOに使用し、このスタックは、私はおそらくでこのオブジェクトの間違いを持っ​​ている '\ n' の6番目の要素の後にあるので。どうすればこの問題を解決できますか?

答えて

1

配列自体には\nはありません。何らかの理由でrepr(str(stack))を見ているようです。

[~] 
|14> stack 
array([ 0.091698 , 0.69801199, 0.88459301, 0.83468097, 0.50044298, 0.229835 , 0.429932 , 0.989021 , 0.  ]) 

[~] 
|15> print stack 
[ 0.091698 0.69801199 0.88459301 0.83468097 0.50044298 0.229835 
    0.429932 0.989021 0.  ] 

[~] 
|16> print str(stack) 
[ 0.091698 0.69801199 0.88459301 0.83468097 0.50044298 0.229835 
    0.429932 0.989021 0.  ] 

[~] 
|17> print repr(str(stack)) 
'[ 0.091698 0.69801199 0.88459301 0.83468097 0.50044298 0.229835\n 0.429932 0.989021 0.  ]' 

[~] 
|18> repr(stack[5]) 
'0.22983500000000001' 
+0

thxは解決策ですが、間違いではありませんでした。デバッガはあなたが言ったようにこのベクトルの表現を表示します – gman1200

1

数字ではなく文字列配列で作業しているように見えます。あなたは山車にnumpyの文字列配列を変換することができます:

a = numpy.array(['0.4', '1.2\n', '.6']) 
x = a.astype(numpy.float) 
+0

V = numpy.array(mesh.vertices、 'F') N = numpy.array(mesh.normals、 'F') T = numpy.array(mesh.texturecoords、 'F') 私はこれを使って配列を構築しています – gman1200

+0

v、n、tの型を浮動小数点にするのをチェックしますが、Robert Kernは以下の解決策があると思います。 –

関連する問題