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

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

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

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

Python 3.x

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

Q&A

解決済

2回答

1272閲覧

Pythonでの複数リストへの一括処理(numpyでの実装)について

yu_2_8_2

総合スコア34

NumPy

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

Python 3.x

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

0グッド

0クリップ

投稿2021/07/12 12:31

Python3.9においてwebsocketからJSONで得られたデータを加工し、
以下のような7つの要素を持つリスト

list = [(小数点第一位までの数値), float(>0), float(>0), float(>0), float(>0), float(>0), (1 or 0 or -1)]

(list[-1]は3値を取りたい)
を秒間10〜100個程度、逐次的に取得している状況において、
一定時間置きにリアルタイムでリスト同士の集約を行いたいです。

具体的には、list[0]が同じリストについて、list[1:6]を足し合わせたいのですが
(list[6]の値による条件分岐はこの際簡単のため無視)、
Python等の経験も浅く、効率的な実装が判断できません。

現時点では、例えば1分間に取得したものについて、各listをnumpyで1次元配列に、その後多次元配列に変換し、その多次元配列に対して上記の処理を一括で行おうと考えているのですが、方向性として効率的でしょうか。

また、この方向性で実装するとして、ndarrayにおいての「list[0]が同値なリストについて、list[1:6]を足し合わせる」書き方がいろいろ調べてもわからず、質問いたします。どなたかお詳しい方、ご教授いただけると幸いです。
(不足している情報があればすぐに補足いたします。)

[33672.0, 0, 0.1485, 0.1485, 0, 0, 1] [33667.0, 0.7323, 0, 0.7323, 0, 0, 1] [33666.0, 0, 0.0001, 0.0001, 0, 0, 1] [33667.0, 0.065, 0, 0.065, 0, 0, 1] [33666.0, 0, 0.1152, 0.1152, 0, 0, 1] [33667.0, 0.0148, 0, 0.0148, 0, 0, 1] [33666.0, 0, 0.0001, 0.0001, 0, 0, 1] [33666.0, 0, 0.0001, 0.0001, 0, 0, 1] [33667.0, 0.0119, 0, 0.0119, 0, 0, 1] [33667.0, 0.12, 0, 0, 0, 0.12, 0] [33667.0, 0.0611, 0, 0, 0, 0.0611, 0] [33667.0, 0.002, 0, 0.002, 0, 0, 1] [33667.0, 0.002, 0, 0.002, 0, 0, 1] [33667.0, 0.4411, 0, 0.4411, 0, 0, 1] [33667.0, 0.002, 0, 0.002, 0, 0, 1] [33667.0, 0.002, 0, 0.002, 0, 0, 1] [33667.0, 0.1, 0, 0.1, 0, 0, 1] [33667.0, 0.001, 0, 0.001, 0, 0, 1] [33667.0, 0.1, 0, 0.1, 0, 0, 1] [33666.0, 0, 0.01, 0, 0, 0.01, 0] [33665.0, 0, 0.15, 0, 0.15, 0, -1] [33662.0, 0, 0.05, 0, 0.05, 0, -1] [33662.0, 0.0015, 0, 0.0015, 0, 0, 1] [33664.0, 0.0005, 0, 0.0005, 0, 0, 1] [33661.0, 0, 0.0535, 0.0535, 0, 0, 1] [33660.0, 0, 0.0432, 0, 0.0432, 0, -1] [33660.0, 0.045, 0, 0.045, 0, 0, 1]

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

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

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

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

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

guest

回答2

0

ベストアンサー

numpyよりも、pandasを使う方が簡単です。

python

1>>> import pandas as pd 2>>> 3>>> df = pd.DataFrame([[33672.0, 0, 0.1485, 0.1485, 0, 0, 1], 4... [33667.0, 0.7323, 0, 0.7323, 0, 0, 1], 5... [33666.0, 0, 0.0001, 0.0001, 0, 0, 1], 6... [33667.0, 0.065, 0, 0.065, 0, 0, 1], 7... [33666.0, 0, 0.1152, 0.1152, 0, 0, 1], 8... [33667.0, 0.0148, 0, 0.0148, 0, 0, 1], 9... [33666.0, 0, 0.0001, 0.0001, 0, 0, 1], 10... [33666.0, 0, 0.0001, 0.0001, 0, 0, 1], 11... [33667.0, 0.0119, 0, 0.0119, 0, 0, 1], 12... [33667.0, 0.12, 0, 0, 0, 0.12, 0], 13... [33667.0, 0.0611, 0, 0, 0, 0.0611, 0], 14... [33667.0, 0.002, 0, 0.002, 0, 0, 1], 15... [33667.0, 0.002, 0, 0.002, 0, 0, 1], 16... [33667.0, 0.4411, 0, 0.4411, 0, 0, 1], 17... [33667.0, 0.002, 0, 0.002, 0, 0, 1], 18... [33667.0, 0.002, 0, 0.002, 0, 0, 1], 19... [33667.0, 0.1, 0, 0.1, 0, 0, 1], 20... [33667.0, 0.001, 0, 0.001, 0, 0, 1], 21... [33667.0, 0.1, 0, 0.1, 0, 0, 1], 22... [33666.0, 0, 0.01, 0, 0, 0.01, 0], 23... [33665.0, 0, 0.15, 0, 0.15, 0, -1], 24... [33662.0, 0, 0.05, 0, 0.05, 0, -1], 25... [33662.0, 0.0015, 0, 0.0015, 0, 0, 1], 26... [33664.0, 0.0005, 0, 0.0005, 0, 0, 1], 27... [33661.0, 0, 0.0535, 0.0535, 0, 0, 1], 28... [33660.0, 0, 0.0432, 0, 0.0432, 0, -1], 29... [33660.0, 0.045, 0, 0.045, 0, 0, 1]]) 30>>> print(df) 31 0 1 2 3 4 5 6 320 33672.0 0.0000 0.1485 0.1485 0.0000 0.0000 1 331 33667.0 0.7323 0.0000 0.7323 0.0000 0.0000 1 342 33666.0 0.0000 0.0001 0.0001 0.0000 0.0000 1 353 33667.0 0.0650 0.0000 0.0650 0.0000 0.0000 1 364 33666.0 0.0000 0.1152 0.1152 0.0000 0.0000 1 375 33667.0 0.0148 0.0000 0.0148 0.0000 0.0000 1 386 33666.0 0.0000 0.0001 0.0001 0.0000 0.0000 1 397 33666.0 0.0000 0.0001 0.0001 0.0000 0.0000 1 408 33667.0 0.0119 0.0000 0.0119 0.0000 0.0000 1 419 33667.0 0.1200 0.0000 0.0000 0.0000 0.1200 0 4210 33667.0 0.0611 0.0000 0.0000 0.0000 0.0611 0 4311 33667.0 0.0020 0.0000 0.0020 0.0000 0.0000 1 4412 33667.0 0.0020 0.0000 0.0020 0.0000 0.0000 1 4513 33667.0 0.4411 0.0000 0.4411 0.0000 0.0000 1 4614 33667.0 0.0020 0.0000 0.0020 0.0000 0.0000 1 4715 33667.0 0.0020 0.0000 0.0020 0.0000 0.0000 1 4816 33667.0 0.1000 0.0000 0.1000 0.0000 0.0000 1 4917 33667.0 0.0010 0.0000 0.0010 0.0000 0.0000 1 5018 33667.0 0.1000 0.0000 0.1000 0.0000 0.0000 1 5119 33666.0 0.0000 0.0100 0.0000 0.0000 0.0100 0 5220 33665.0 0.0000 0.1500 0.0000 0.1500 0.0000 -1 5321 33662.0 0.0000 0.0500 0.0000 0.0500 0.0000 -1 5422 33662.0 0.0015 0.0000 0.0015 0.0000 0.0000 1 5523 33664.0 0.0005 0.0000 0.0005 0.0000 0.0000 1 5624 33661.0 0.0000 0.0535 0.0535 0.0000 0.0000 1 5725 33660.0 0.0000 0.0432 0.0000 0.0432 0.0000 -1 5826 33660.0 0.0450 0.0000 0.0450 0.0000 0.0000 1 59>>> print(df.groupby(0).sum()) 60 1 2 3 4 5 6 610 6233660.0 0.0450 0.0432 0.0450 0.0432 0.0000 0 6333661.0 0.0000 0.0535 0.0535 0.0000 0.0000 1 6433662.0 0.0015 0.0500 0.0015 0.0500 0.0000 0 6533664.0 0.0005 0.0000 0.0005 0.0000 0.0000 1 6633665.0 0.0000 0.1500 0.0000 0.1500 0.0000 -1 6733666.0 0.0000 0.1255 0.1155 0.0000 0.0100 4 6833667.0 1.6552 0.0000 1.4741 0.0000 0.1811 12 6933672.0 0.0000 0.1485 0.1485 0.0000 0.0000 1

投稿2021/07/12 13:04

ppaul

総合スコア24670

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

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

yu_2_8_2

2021/07/12 15:13

ご回答ありがとうぞざいます! ちなみにすいません、上のようにlistとlistを「,」で結合するのにappend以外の方法ってありましたっけ?
yu_2_8_2

2021/07/12 15:14

[33662.0, 0.0015, 0, 0.0015, 0, 0, 1], [33664.0, 0.0005, 0, 0.0005, 0, 0, 1],
yu_2_8_2

2021/07/12 15:30

あ、自力で解決できました。 お騒がせしました
guest

0

python

1# ppaulさんに追加 2 3df.groupby(0).sum().sum(axis=1).to_csv('out.csv',header=None) 4 5""" 6!cat out.csv 7 833660.0,0.1764 933661.0,1.107 1033662.0,0.10300000000000001 1133664.0,1.001 1233665.0,-0.7 1333666.0,4.251 1433667.0,15.3104 1533672.0,1.297 16 17"""

投稿2021/07/12 13:22

toshikawa

総合スコア388

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.35%

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

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

質問する

関連した質問