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

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

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

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

Python

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

Q&A

解決済

2回答

1731閲覧

2次元配列データの加工方法

arumon

総合スコア20

Python 3.x

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

Python

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

0グッド

0クリップ

投稿2017/11/15 02:34

2次元の配列データを加工したいのですが、うまくいきません。
素人質問で恐縮ですが、ご回答頂けると幸いです。

■やりたいこと
・時系列のcsvファイルのデータ(3行×1000列)がある
・3行×3列を1セットとする
・1列ずつずらしてセットを作成する
⇒最初は13列目、2番目は24列目
・それらを1つのシートにまとめる

※イメージ
・csvファイルのデータ
t a b c
0.01 1.00 1.02 1.07
0.02 1.20 1.03 1.08
0.03 1.32 1.04 1.07
0.04 1.22 1.08 1.08
0.05 1.05 1.01 1.07


・加工後のデータ
0.01 1.00 1.02 1.07
0.02 1.20 1.03 1.08
0.03 1.32 1.04 1.07
0.02 1.20 1.03 1.08
0.03 1.32 1.04 1.07
0.04 1.22 1.08 1.08
0.03 1.32 1.04 1.07
0.04 1.22 1.08 1.08
0.05 1.05 1.01 1.07

下記のコードで実装しましたが、
エラーが出ました。

i = 0
X0 = []
X1 = []
X2 = []
X0 = np.genfromtxt("a.csv", delimiter=',', dtype=np.float32, usecols=(0, 1, 2))

while i < 1000-2:
X1 =X_test0[i:i+2, :]
X2 = np.append(X1)
i+1
print("X_test")

X2 = np.append(X1)
TypeError: append() missing 1 required positional argument: 'values'

説明が分かりにくいかもしれませんが、ご回答頂けると幸いです。
宜しくお願い致します。

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

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

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

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

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

guest

回答2

0

ベストアンサー

こんな感じですか?

データのサンプル:

a=np.arange(30).reshape(3,10) a=a.transpose()# 10 x 3 配列

新しい配列 b の作り方

i=np.array([0,1,2]).reshape(3,1) j=np.arange(8) k= (i + j).flatten('F') b=a[k,:]

一つ一つprintで内容見れば、何をやっているのかよくわかるはずです。

投稿2017/11/15 03:15

WathMorks

総合スコア1582

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

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

arumon

2017/11/15 07:39

ご丁寧にありがとうございます。 printで中身を見ると何をやっているのかわかりやすかったです。 実装できました。 1点、追加質問で恐縮です。 今回はSETの塊を1列ずつずらしていましたが、ずらす列数を指定する事はできるのでしょうか? 今回ご提示いただいたflatten関数を調べましたが、どう設定すればいいのか分からず詰まってしまいました。。 何度も申し訳ありませんが、ご回答頂けると幸いです。 宜しくお願い致します。
WathMorks

2017/11/15 07:52

できますよ。 jを等差数列にすればいいと思います。 2つ飛ばしなら j=np.arange(0,8,2) とすればO.K.です。質問の真意をこちらがちゃんとくみ取れているか自信ありませんが。
arumon

2017/11/15 08:13

ご回答ありがとうございます。 実装できました。 私の説明不足で恐縮でしたが、質問の意図はくみ取って頂き、ありがとうございます。 おかげさまで解決しました。 ありがとうございます。
guest

0

ダブルループの内包表記でもさくっと書けます。

python

1x0[[i + j for i in range(x0.shape[0] - 2) for j in range(3)], :]

これと等価です。

python

1k=[] 2for i in range(x0.shape[0] - 2): 3 for j in range(3): 4 k.append(i+j) 5x0[k,:]

投稿2017/11/15 07:36

y__sama

総合スコア83

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問