同じ数の引数を持つ2つの配列を結合しようとしています。
入力します。
first = [[650001.88, 300442.2, 18.73, 0.575, 650002.094, 300441.668, 18.775],
[650001.96, 300443.4, 18.7, 0.65, 650002.571, 300443.182, 18.745],
[650002.95, 300442.54, 18.82, 0.473, 650003.056, 300442.085, 18.745]]
second = [[1],
[2],
[3]]
私が期待する出力
final = [[650001.88, 300442.2, 18.73, 0.575, 650002.094, 300441.668, 18.775, 1],
[650001.96, 300443.4, 18.7, 0.65, 650002.571, 300443.182, 18.745, 2],
[650002.95, 300442.54, 18.82, 0.473, 650003.056, 300442.085, 18.745, 3]]
そのために、簡単なループを作っています。
for i in first:
for j in second:
final += np.append(j, i)
何か足りないものがあるような気がしてきました。まず第一に、私のループは非常に遅いです。次に、私のデータは非常に多く、ループするために2mlns行以上を持っています。だから、私はより速い方法を見つけるために、例えば、このコードを試してみました。
final = [np.append(i, second[0]) for i in first]
これは、以前のループよりもはるかに速く動作しますが、2番目の配列の最初の値のみを追加しています。 助けていただけますか?
np.arrayを使用し、次に
np.concatenate` を使用します。
import numpy as np
first = np.array([[650001.88, 300442.2, 18.73, 0.575,
650002.094, 300441.668, 18.775],
[650001.96, 300443.4, 18.7, 0.65,
650002.571, 300443.182, 18.745],
[650002.95, 300442.54, 18.82, 0.473,
650003.056, 300442.085, 18.745]])
second = np.array([[1],
[2],
[3]])
np.concatenate((first, second), axis=1)
ここで、axis=1
は水平方向に連結することを意味します。
これは私のために動作します
np.column_stack`を使用します。
import numpy as np
first = [[650001.88, 300442.2, 18.73, 0.575, 650002.094, 300441.668, 18.775],
[650001.96, 300443.4, 18.7, 0.65, 650002.571, 300443.182, 18.745],
[650002.95, 300442.54, 18.82, 0.473, 650003.056, 300442.085, 18.745]]
second = [[1],
[2],
[3]]
np.column_stack([first, second])
リストとして必要な場合は、tolist
メソッドを使用してください。
np.column_stack([first, second]).tolist()