🎄teratailクリスマスプレゼントキャンペーン2024🎄』開催中!

\teratail特別グッズやAmazonギフトカード最大2,000円分が当たる!/

詳細はこちら
ファイル

ファイルとは、文字列に基づいた名前又はパスからアクセスすることができる、任意の情報のブロック又は情報を格納するためのリソースです。

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

Q&A

1回答

315閲覧

ファイルを同様にしたいです

543

総合スコア15

ファイル

ファイルとは、文字列に基づいた名前又はパスからアクセスすることができる、任意の情報のブロック又は情報を格納するためのリソースです。

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

0グッド

0クリップ

投稿2019/12/23 17:51

編集2019/12/24 03:38

python

import numpy as np import math from numpy import array from numpy import linalg as LA import numpy
txt = np.loadtxt("pos.txt", dtype=str) print(txt)

実行結果

[['0' '-19.366079484550315' '0.0' '807.5509318625355,' '1' '-125.12481820663383' '-8.271080752799351' '807.4946245125766,' '2' '-187.99750090621725' '-94.42628226891544' '467.06023408097906,' '3' '-250.94861874167194' '10.665693027462993' '141.41760720941193,' '6' '86.83109845026942' '8.270964230209326' '807.6067236564637,' '7' '115.90619350736293' '-0.7598077451048937' '451.3555117359048,' '8' '170.29159682047555' '157.58263148915424' '120.22283329800803,' '12' '-27.923920037182512' '9.015201309762475' '1137.8794309094715,' '13' '-19.08898258989477' '-9.076500064621072' '1377.946362353638,' '14' '7.568791168004186' '-88.68190572253998' '1434.545805252384,' '15' '10.688082226965937' '-87.47234619481964' '1565.9340126852685,' '17' '174.18190648472938' '19.187442084579317' '1330.202840331924,' '18' '206.12747135567284' '82.82511526452976' '1064.5806927517028,' '19' '201.1531668956186' '-12.058370542830446' '807.1337630194968,' '25' '-182.95583025343177' '-5.874393749754418' '1336.087328246923,' '26' '-232.43619795111272' '23.483609190467458' '1060.09368346194,' '27' '-247.55216721966744' '-45.356069269410334' '825.6500002608236,']

''を省き以下のような形にしたいです.

[[ 0.00000000e+00 -1.07784731e-01 0.00000000e+00 5.34467328e+02 1.00000000e+00 -8.69184320e+01 -3.12723766e+01 5.44275750e+02 2.00000000e+00 -1.56086607e+02 -8.56866898e+01 2.90261612e+02 3.00000000e+00 -2.31943586e+02 1.75777158e+01 2.91960918e+01 6.00000000e+00 8.80709545e+01 3.12721572e+01 5.24534726e+02 7.00000000e+00 1.46564696e+02 -1.24999012e+02 2.64574310e+02 8.00000000e+00 1.76755871e+02 -1.42499048e+02 5.89798142e+01 1.20000000e+01 1.29430659e+01 5.29321590e+00 6.84659676e+02 1.30000000e+01 1.74517718e+01 -2.37796071e+00 9.20011488e+02 1.40000000e+01 4.53356092e+01 -5.05112412e+01 9.75273102e+02 1.50000000e+01 5.81465511e+01 -3.39452419e+01 1.10484814e+03 1.70000000e+01 1.44770661e+02 4.36276525e+01 8.78531143e+02 1.80000000e+01 1.63237347e+02 1.00367522e+02 6.91725263e+02 1.90000000e+01 1.60579958e+02 2.44391511e+01 5.32922027e+02 2.50000000e+01 -1.10331108e+02 -3.94071405e+01 8.91927989e+02 2.60000000e+01 -1.57001909e+02 -6.78258116e+01 7.18662022e+02 2.70000000e+01 -1.97890179e+02 -1.73602758e+02 5.67705410e+02]

上記のようにするにはどのようにしたら良いのでしょうか?何度もtxtファイルについて質問をしてしまい申し訳ございません.どなたかよろしくお願い致します.

0 -0.10778473072856658 0.0 534.4673276334413 1 -86.91843202417452 -31.272376576945117 544.275749869217 2 -156.08660696664396 -85.68668980088205 290.26161236460837 3 -231.94358572422004 17.577715759547544 29.196091795388043 6 88.07095448061722 31.2721571558353 524.534725679862 7 146.56469571882283 -124.9990118278697 264.5743103785835 8 176.7558706603975 -142.4990483599251 58.97981418193831 12 12.943065925992794 5.29321590110731 684.659675560762 13 17.451771820870427 -2.377960713105807 920.0114879511895 14 45.33560922409042 -50.51124123420235 975.2731015961849 15 58.146551098923084 -33.94524191243286 1104.8481404570057 17 144.7706605463885 43.627652504039325 878.5311426360776 18 163.23734749448406 100.3675217475664 691.7252631104815 19 160.57995782562423 24.43915114407416 532.9220266584131 25 -110.33110775575588 -39.407140457243344 891.9279893575855 26 -157.0019092426122 -67.82581164704341 718.6620220215236 27 -197.8901790721251 -173.60275837044557 567.7054104278092

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

LouiS0616

2019/12/23 23:05

なぜ dtype=str で読み込んでいるのですか?
543

2019/12/24 01:31

すみません,ありがとうございます. dtype=strをとると, could not convert string to float: '807.5509318625355,' となり,スペース区切りの読み込みにはどのようにするべきでしょうか? 回答いただけましたらお願いいたします.
LouiS0616

2019/12/24 01:36 編集

pos.txtにカンマが混在しているようです。スペース区切りならばこれは除去すべきでしょう。
543

2019/12/24 01:53

ここまで教えていただくのは無理かと思いますが,カンマの除去はどのようにするべきでしょうか.知識がなく教えいただけたらよろしくお願い致します.
LouiS0616

2019/12/24 01:58

pos.txtは何らかのプログラムで吐いたものですか?そうであるならば、吐き出し側のプログラムに問題があることになります。 もしpos.txtを今後更新する予定が無いのなら、適当なエディタツールを用いてカンマを削除しても良いでしょう。ただしこれは対症療法に過ぎません。
543

2019/12/24 02:31 編集

回答ありがとうございます.大変参考になり助かりました. 以下のコードは,数値のみ違う別のファイルなのですが, txt = np.loadtxt('w1.txt') #print(type(txt)) print(txt) #print(txt.dtype) numpy.set_printoptions(threshold=numpy.inf) で[[ 0.00000000e+00 -1.07784731e-01 0.00000000e+00 5.34467328e+02 1.00000000e+00 -8.69184320e+01 -3.12723766e+01 5.44275750e+02 2.00000000e+00 -1.56086607e+02 -8.56866898e+01 2.90261612e+02 3.00000000e+00 -2.31943586e+02 1.75777158e+01 2.91960918e+01 6.00000000e+00 8.80709545e+01 3.12721572e+01 5.24534726e+02 7.00000000e+00 1.46564696e+02 -1.24999012e+02 2.64574310e+02 で綺麗になったのですが,数値は違っていますが同じ形式なんです.これはどういったことが考えられるかお分かりになりますか?.
543

2019/12/24 02:33

はい,3d-openposeから出力したものになります. ありがとうごうざいます.エディターツールで削除してみます.
LouiS0616

2019/12/24 02:56

出力のコードを見てみないと何とも言えません。 何かしらバグを埋め込んでいるのかもしれませんし、単にそのように出力する仕様なのかもしれません。 まぁ3d-openposeは触ったことが無いのでコードを見てもアドバイスできるか分からないですが。
LouiS0616

2019/12/24 03:05

これひょっとしてカンマがレコード区切りに使われているんですかね。多分そうですね。
543

2019/12/24 03:42

3d-openposeの出力ファイルに記載したのですが,回答いただけましたらよろしくお願い致します.
543

2019/12/24 03:43

レコード区切りと言われるものはカンマ区切りとは違うものになるのでしょうか? 何も知らず申し訳ありません.
LouiS0616

2019/12/24 04:05

いわゆる表形式のデータはフィールド区切りとレコード区切りを一つに定めて使います。 - 一般的なCSV形式だとカンマと改行を区切りに使います。 - numpy.loadtxtはデフォルト設定だと空白と改行を区切りに使います。フィールド区切りはキーワード引数で指定可能ですが、私の知る限りではレコード区切りは変更できません。 - ご提示のファイルは、どうやら空白とカンマを区切りに使っているようです。これはちょっとCSVとは呼べないのでは無いでしょうか。
guest

回答1

0

python

1import numpy as np 2from io import StringIO 3 4with open('pos.txt', 'r') as fd: 5 txt = np.loadtxt(StringIO( 6 fd.read().replace(',', ' ').replace(' ', ' '))) 7 8print(txt)

投稿2023/05/05 03:09

ujimushi_sradjp

総合スコア2152

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.36%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問