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

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

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

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

Python

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

pandas

Pandasは、PythonでRにおけるデータフレームに似た型を持たせることができるライブラリです。 行列計算の負担が大幅に軽減されるため、Rで行っていた集計作業をPythonでも比較的簡単に行えます。 データ構造を変更したりデータ分析したりするときにも便利です。

Q&A

解決済

3回答

672閲覧

numpyの一列目に特定の値をもつ行を抽出したい。

tontonchin

総合スコア0

NumPy

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

Python

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

pandas

Pandasは、PythonでRにおけるデータフレームに似た型を持たせることができるライブラリです。 行列計算の負担が大幅に軽減されるため、Rで行っていた集計作業をPythonでも比較的簡単に行えます。 データ構造を変更したりデータ分析したりするときにも便利です。

0グッド

0クリップ

投稿2021/09/24 07:36

編集2021/09/24 07:40

Pyhtonのnumpyの特定の配列を抽出、または削除したいです。

発生している問題・エラーメッセージ

array([[ 2, 1, 0, ..., -1, -1, -1], [ 2, 2, 2, ..., -1, -1, -1], [ 2, 3, 9, ..., -1, -1, -1], ..., [1561, 99, 0, ..., -1, -1, -1], [1561, 107, 2, ..., -1, -1, -1], [1561, 110, 0, ..., -1, -1, -1]])

物体検出のライブラリを用いて、映像から物体検出を行い、エクセルのデータにし、それを読み込み、配列にしました。
一列目の数字がフレームの番号となっております。
60fpsの映像であり、0.5秒、つまり30フレームごとに配列を抜き出したい(つまり一列目の数字が2,32,62,,,,となる行が欲しい)のですが、どうしたら良いのかわかりません。

該当のソースコード

Python

1import numpy as np 2import random 3import pandas as pd 4import openpyxl 5import xlrd 6 7df = pd.read_excel("mati_kekka.xlsx", sheet_name='Sheet1') 8 9nmp=df.to_numpy() 10syudan = nmp 11 12syudan

試したこと

いろいろ調べてみたのですが、よくわからず、質問させていただきました。
よろしくお願いいたします。

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

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

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

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

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

guest

回答3

0

先頭を30で割ったあまりが2の行を取り出したいと考えると、次の式でできないでしょうか。

python

1# 2nmp[nmp[:, 0] % 30 == 2]

投稿2021/09/24 09:13

編集2021/09/24 09:14
bsdfan

総合スコア4599

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

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

0

単純な方法ですが、以下のようなループで目的の番号だけを持つ配列を抽出できます。

Python

1import numpy as np 2 3# 1行以上あり、0列目は整数で、その昇順で並んでいるものとする 4src = np.array([[2,21],[2,22],[3,31],[32,321]]) 5 6# 先頭の値から末尾の行の値まで30刻み 7for no in range(src[0][0],src[src.shape[0]-1][0]+1,30): 8 sub = src[src[:,0] == no] 9 print('-----\n',sub) 10 11""" 12----- 13 [[ 2 21] 14 [ 2 22]] 15----- 16 [[ 32 321]] 17"""

投稿2021/09/24 08:02

can110

総合スコア38278

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

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

tontonchin

2021/09/24 08:11

ありがとうございます。一旦試してみます。
guest

0

自己解決

みなさん、本当に回答ありがとうございます。
しかし、あまりプログラミングがわからず、(初心者なので他の人のプログラムが読めない)なので、みなさんの提示してくださった方法から自己流で次のように書いて解決しました。ご回答いただいた方本当にありがとうございました。

python

1 2syudanは元の配列 3 4arr = np.empty((0,7), int) 5for i in range(10523): 6 f = (syudan[i,0] - 2)/30 7 if f.is_integer(): 8 print(syudan[i,0]) 9 brr =np.append(brr,np.array([[syudan[i,0],syudan[i,1],syudan[i,2],syudan[i,3],syudan[i,4],syudan[i,5],syudan[i,6]]]), axis=0) 10

投稿2021/09/24 09:59

編集2021/09/24 10:02
tontonchin

総合スコア0

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.46%

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

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

質問する

関連した質問