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

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

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

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

Q&A

解決済

1回答

626閲覧

ファイルに書き出すlistを”array(数値)”ではなく”数値”表記にしたい

spu

総合スコア23

Python

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

0グッド

0クリップ

投稿2020/02/26 06:58

編集2020/02/26 07:02

前提・実現したいこと

ファイルに書き出すlistを”array(数値)”ではなく”数値”表記にしたいです。
また、カッコ()の表示も除きたいです。

該当のソースコード(一部)

python

1t=[1,2,3,4,5]#list 2x=[1,2,...,100]#list#要素100個 3y=[1,2,...,100]#list#要素100個 4p=[Numppy array, Numpy array,...0,0]#list#要素100個,(Numpy arrayはfloat64型、サイズは())(0はint型でサイズ1) 5 6with open('output.txt', 'w') as f: 7  for i in t: 8 data.append(list(zip([i]*100,x, y,p))) 9 write_tmp=csv.writer(f,lineterminator='\n',delimiter='\n') 10 write_tmp.writerows(data)

output file

(1,1,1,array(数値))
(1,2,2,array(数値))
(...)
(...)
(...)
(5,100,100,0.0)

### 欲しいoutput file 1,1,1,数値 1,2,2,数値 ... ... ... 5,100,100,0.0 tolistなど試しましたが、'list' object has no attribute 'tolist'のようになります。 初歩的ですが、ご教授いただけると幸いです。 宜しくお願い致します。

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

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

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

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

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

guest

回答1

0

ベストアンサー

pの形がよく分かりませんので推測で回答しますが、以下のような感じでしょうか。

Python

1import csv 2 3# 適当なテストケース 4N = 3 5t=[1,2] 6x=[i+1 for i in range(N)] 7y=[i+1 for i in range(N)] 8 9#p=[Numppy array, Numpy array,...0,0]#list#要素100個,(Numpy arrayはfloat64型、サイズは())(0はint型でサイズ1) 10# つまりN-1個のnp.arrayと1個のゼロのリストということ? 11# np.arrayの形も分からないが、とりあえず適当な一次元配列とする 12p = [np.array([i,10+i, 100+i]) for i in range(N-1)] + [0] 13 14# 2次元リストに展開 15p = [e.tolist() if isinstance(e, np.ndarray) else [e] for e in p] 16print(p) # [[0, 10, 100], [1, 11, 101], [0]] 17 18with open('output.txt', 'w', newline='') as f: 19 w = csv.writer(f) 20 for i in t: 21 txy = list(zip([i]*N,x, y)) # t, x, y だけでリストを作る 22 lines = [list(ti) + list(pi) for ti, pi in zip(txy, p)] # 各行の列の後ろにpを足しこむ 23 w.writerows(lines) 24 25# output.txt 26""" 271,1,1,0,10,100 281,2,2,1,11,101 291,3,3,0 302,1,1,0,10,100 312,2,2,1,11,101 322,3,3,0 33"""

投稿2020/02/26 08:35

can110

総合スコア38233

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

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

spu

2020/02/27 05:56

情報が十分でない中、ご回答ありがとうございます! ほぼ原形を使わせていただいたのですが、pの形式の問題か、 lines = [list(ti) + list(pi) for ti, pi in zip(txy, p)] のlist(pi)の部分で’float' object is not iterableというエラーが出てしまいました。 pに対してtake(0)を使ってから走らせるとそのエラーも消えました。 大変参考になりました、ありがとうございました!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.50%

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

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

質問する

関連した質問