質問をすることでしか得られない、回答やアドバイスがある。

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

新規登録して質問してみよう
ただいま回答率
85.48%
NumPy

NumPyはPythonのプログラミング言語の科学的と数学的なコンピューティングに関する拡張モジュールです。

Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

ファイルI/O

ファイルI/Oは、コンピューターにおけるファイルの入出力です。これは生成/削除やファイルを読み込んだり、出力をファイルに書き込むようなディレクトリやファイルの運用を含みます。

Python

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

配列

配列は、各データの要素(値または変数)が連続的に並べられたデータ構造です。各配列は添え字(INDEX)で識別されています。

Q&A

解決済

1回答

8077閲覧

2次元データ配列のみをテキストファイルに保存したい

Ibkyy

総合スコア15

NumPy

NumPyはPythonのプログラミング言語の科学的と数学的なコンピューティングに関する拡張モジュールです。

Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

ファイルI/O

ファイルI/Oは、コンピューターにおけるファイルの入出力です。これは生成/削除やファイルを読み込んだり、出力をファイルに書き込むようなディレクトリやファイルの運用を含みます。

Python

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

配列

配列は、各データの要素(値または変数)が連続的に並べられたデータ構造です。各配列は添え字(INDEX)で識別されています。

0グッド

0クリップ

投稿2019/06/10 05:27

前提・実現したいこと

2次元配列データをテキストファイルに出力すること。
この際、数字のみを出力したいです。

実行コマンド

中身を1とした10x10の2次元配列を作成し、テキストファイルに書き出すコードを作成しました。

python3

1import numpy as np 2 3data = np.full((10, 10), 1) 4filepath = 'test.txt' 5 6with open(filepath, mode='w') as f: 7 f.write(str(data))

# 実行結果
上のコードを実行するとtest.txtファイルの中身は以下の内容が保存されていました。
数字のみを保存できるとよかったのですが、括弧も併せて保存されてしまいました。
数字のみを書き込みたい場合の解決策はありますでしょうか。
参考までに実現したい理想の結果を次に載せます。

# test.txtの中身 [[1 1 1 1 1 1 1 1 1 1] [1 1 1 1 1 1 1 1 1 1] [1 1 1 1 1 1 1 1 1 1] [1 1 1 1 1 1 1 1 1 1] [1 1 1 1 1 1 1 1 1 1] [1 1 1 1 1 1 1 1 1 1] [1 1 1 1 1 1 1 1 1 1] [1 1 1 1 1 1 1 1 1 1] [1 1 1 1 1 1 1 1 1 1] [1 1 1 1 1 1 1 1 1 1]]

# 理想の結果
括弧を取りたい。

# test.txtの中身 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1

原因

write()関数の引数はstring型に指定されているため、int型をstring型に変換しなければなりません。f.write(str(data))の部分で不要な括弧がついてくると思われます。

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

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

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

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

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

guest

回答1

0

ベストアンサー

np.savetxtで保存すれば良いです。

Python

1import numpy as np 2 3data = np.full((10, 10), 1, dtype=np.int) 4np.savetxt('test.dat', data, fmt='%d')

コメントを受けて

ついでにですが以下のようなデータも保存できますでしょうか。

ぜひ教えていただけると助かります。

test.txtの中身

100
200
300
1 1 1 1 1 1 1 1 1 1
...

それだとprintを使うと楽でしょう。

Python

1import numpy as np 2 3data = np.full((10, 10), 1, dtype=np.int) 4 5with open('test.txt', mode='w') as fout: 6 print(100, file=fout) 7 print(200, file=fout) 8 print(300, file=fout) 9 10 for row in data: 11 print(*row, file=fout)

投稿2019/06/10 05:30

編集2019/06/10 06:02
LouiS0616

総合スコア35660

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

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

Ibkyy

2019/06/10 05:55

ご指摘いただいた方法で実現できました。 ご教授いただきありがとうございます。 ついでにですが以下のようなデータも保存できますでしょうか。 ぜひ教えていただけると助かります。 ``` # test.txtの中身 100 200 300 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 ```
LouiS0616

2019/06/10 06:03

回答に追記しました。 ...が、元々の『2次元データ配列のみを』保存したいという要件から乖離しています。 このような後出しは歓迎できません。
Ibkyy

2019/06/10 06:13

ご回答ありがとうございます。 大変参考になりました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問