Мне нужно создать массив длины NumPy n
, каждый элемент которого есть v
.
Есть ли что-нибудь лучше, чем:
a = empty(n)
for i in range(n):
a[i] = v
Я знаю zeros
и ones
работал бы для v = 0, 1. Я мог бы использовать v * ones(n)
, но он не будет работать, когда будет намного медленнее.v
есть None
, а также
v * ones(n)
все еще ужасно, так как использует дорогостоящее умножение. Замените *
на +
while, и v + zeros(n)
в некоторых случаях он оказывается на удивление хорошим ( stackoverflow.com/questions/5891410/… ).
var = np.empty(n)
а затем заполнить его с помощью var [:] = v. (кстати, np.full()
так быстро , как это)
a = np.zeros(n)
в цикле быстрее, чемa.fill(0)
. Это противоречит тому, что я ожидал, так как думал,a=np.zeros(n)
что нужно будет выделить и инициализировать новую память. Если кто-то может объяснить это, я был бы признателен.