Добавьте строку (строки) к массиву записи NumPy

Ваше использование автоматических свойств подразумевает, что Вам не нужна никакая логика получения/установки для свойства таким образом, частная переменная поддержки является ненужной.

не используют автоматические свойства, если у Вас есть какая-либо сложная логика в Вашем классе. Просто пойдите private int _age и нормальные методы get/методы set, как Вы обычно были бы.

IMO, автоматические свойства больше подходят для того, чтобы быстро реализовать холостые объекты или временные капсулы данных как:

public class TempMessage {
    public int FromID { get; set; }
    public int ToID { get; set; }
    public string Message { get; set; }
}

, Где Вам не нужно много логики.

7
задан ebressert 13 November 2009 в 15:49
поделиться

2 ответа

Вы можете изменять размер numpy массивов на месте. Это быстрее, чем преобразование в списки, а затем обратно в массивы numpy, и при этом также используется меньше памяти.

print (r.shape)
# (4,)
r.resize(5)   
print (r.shape)
# (5,)
r[-1] = (5,'cc',43.0)
print(r)

# [(1, 'a', 1.1000000000000001) 
#  (2, 'dd', 2.0) 
#  (3, 'xyz', 3.0) 
#  (4, '12', 4.0)
#  (5, 'cc', 43.0)]

Если памяти недостаточно для расширения массива на месте, операция изменения размера (или добавления) может заставить NumPy выделить место для совершенно нового массива и скопируйте старые данные в новое место. Это, естественно, довольно медленно, поэтому по возможности старайтесь избегать использования resize или append . Вместо этого предварительно выделяйте массивы достаточного размера с самого начала (даже если они несколько больше, чем в конечном итоге необходимо).

6
ответ дан 7 December 2019 в 10:03
поделиться
np.core.records.fromrecords(r.tolist()+[(5,'cc',43.)])

Тем не менее, он разбивается, на этот раз по строкам. Может лучше?

0
ответ дан 7 December 2019 в 10:03
поделиться
Другие вопросы по тегам:

Похожие вопросы: