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

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

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

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

Python

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

Q&A

解決済

4回答

620閲覧

PythonのNumpyにおいてリストの形式を保持したまま計算する方法

onomatobee

総合スコア2

NumPy

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

Python

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

0グッド

0クリップ

投稿2023/02/28 16:44

実現したいこと

以下のコードにて、計算結果を

(100, 101), (100, 102), (101, 103), (102, 104), (101, 105), (102, 106)

のように元の形を保持したまま出力するにはどのようにすればよいでしょうか。

該当のソースコード

python

1import numpy as np 2 3a = np.array([(0, 1), (0, 2), (1, 3), (2, 4), (1, 5), (2, 6)]) 4b = a+100 5 6print(b)

出力結果

[100 101]
[100 102]
[101 103]
[102 104]
[101 105]
[102 106]

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

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

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

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

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

TakaiY

2023/03/01 01:04

回答いくつもついている状況ではありますが、「元の形を保持したまま出力」したい理由は何ですか? 本当に元となった「タプルのリスト」が必要ですか?それとも、タプルのリスのように「表示したいだけ」ですか?
guest

回答4

0

Numpyで2次元配列を作る際に、np.array()の引数にリスト[]やタプル()を指定できますが、これはそのままの形で保持されるわけではなく、NumpyのN次元配列(np.ndarray)に変換されます。ですから、「元の形を保持したまま出力する」ことはできません。

このため、print(b)で表示すると、np.ndarrayに変換後のデータ(6×2の行列)の内容が複数行にわたって表示されます(先頭と末尾に[]が付いていることに注意)。

result

1[[100 101] 2 [100 102] 3 [101 103] 4 [102 104] 5 [101 105] 6 [102 106]]

もし、bの内容を1行で確認したいのなら、*によるアンパックを利用して、

python

1print(*b) 2print(*b, sep=', ') 3print(*b.tolist(), sep=', ')

とすれば、それぞれ以下の出力を得られますので、お好みのものを使えばいいでしょう。なお、アンパックする都合上、外側の[]はなくなります。

result

1[100 101] [100 102] [101 103] [102 104] [101 105] [102 106] 2[100 101], [100 102], [101 103], [102 104], [101 105], [102 106] 3[100, 101], [100, 102], [101, 103], [102, 104], [101, 105], [102, 106]

投稿2023/02/28 22:29

編集2023/02/28 22:36
Daregada

総合スコア11990

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

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

0

解決しました!ご協力ありがとうございます。

投稿2023/03/01 02:41

onomatobee

総合スコア2

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

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

0

ベストアンサー

「元の形」というのが「タプルを要素としたリスト」といったデータ構造のことであれば、numpyで計算したあとにもとの形にもどせばよいです。

Python

1import numpy as np 2 3a = np.array([(0, 1), (0, 2), (1, 3), (2, 4), (1, 5), (2, 6)]) 4b = a+100 # 何らかの計算 5 6c = [tuple(row) for row in b] 7print(c) # [(100, 101), (100, 102), (101, 103), (102, 104), (101, 105), (102, 106)]

投稿2023/03/01 00:48

can110

総合スコア38266

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

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

0

python

1import numpy as np 2 3a = np.array([(0, 1), (0, 2), (1, 3), (2, 4), (1, 5), (2, 6)], dtype='i,i') 4b = np.array([tuple(i+100 for i in x) for x in a], dtype=a.dtype) 5 6print(f'{a = }') 7print(f'{b = }') 8 9# a = array([(0, 1), (0, 2), (1, 3), (2, 4), (1, 5), (2, 6)], 10# dtype=[('f0', '<i4'), ('f1', '<i4')]) 11# 12# b = array([(100, 101), (100, 102), (101, 103), (102, 104), (101, 105), (102, 106)], 13# dtype=[('f0', '<i4'), ('f1', '<i4')])

投稿2023/03/01 00:12

編集2023/03/01 00:16
melian

総合スコア19796

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問