Saya mencoba menggabungkan dua larik dengan jumlah argumen yang sama.
Masukan:
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]]
Keluaran yang saya harapkan:
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]]
Untuk melakukan itu saya membuat loop sederhana:
for i in first:
for j in second:
final += np.append(j, i)
Saya mendapati saya mengisi bahwa saya melewatkan sesuatu. Pertama-tama loop saya sangat lambat. Kedua, data saya cukup banyak, saya punya lebih dari 2 mlns baris untuk loop. Jadi saya mencoba mencari cara yang lebih cepat misalnya dengan kode ini:
final = [np.append(i, second[0]) for i in first]
Ini bekerja jauh lebih cepat daripada loop sebelumnya tetapi hanya menambahkan nilai pertama dari array kedua. Bisakah Anda membantu saya?
Gunakan np.array
dan kemudian 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)
Dimana axis=1
berarti kita ingin menggabungkan secara horizontal.
Itu bekerja untuk saya
Gunakan 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])
Jika Anda membutuhkannya sebagai daftar, gunakan metode tolist
:
np.column_stack([first, second]).tolist()