Если у вас есть список кортежей, и вы решили, что ненавидите стандартные конструкторы массива (np.array
, np.asarray
и т. Д., Которые, как указывал @JohnZwinck, вероятно, являются лучшим ответом) по какой-то причине, наиболее эффективным подходом было бы предварительно выделить весь массив и затем присвоить ему:
items = [(1, 2), (3, 4)]
arr = np.empty((len(items), len(items[0])))
arr[...] = items
Даже если вы хотите увеличивать массив с течением времени, строка за строкой, он был показан с подробными временными интервалами, что вам обычно лучше просто выделить целый новый массив, а затем копирование старых значений.
Таким образом, с учетом вышеупомянутого arr
, при таком подходе наиболее эффективным способом добавления строки будет:
newitem = (5, 6)
oldarr = arr
arr = np.empty((oldarr.shape[0] + 1, *oldarr.shape[1:]))
arr[:-1,:] = oldarr
arr[-1,:] = newitem