Hi Ram,

No, NumPy doesnít have a way. And it newer versions, it probably wonít create two arrays if all the dtypes match, itíll do some magic to re use the existing ones, although it will use multiple loops instead of just one.

You might want to look into NumExpr or Numba if you want an efficient implementation.


From: NumPy-Discussion <numpy-discussion-bounces+einstein.edison=gmail.com@python.org> on behalf of Ram Rachum <ram@rachum.com>
Sent: Tuesday, July 23, 2019 7:29 pm
To: numpy-discussion@python.org
Subject: [Numpy-discussion] Creating a sine wave with exponential decay

Hi everyone! Total Numpy newbie here.

I'd like to create an array with a million numbers, that has a sine wave with exponential decay on the amplitude.

In other words, I want the value of each cell n to be sin(n) * 2 ** (-n * factor).

What would be the most efficient way to do that?

Someone suggested I do something like this: 

y = np.sin(x) * np.exp(newfactor * x)

But this would create 2 arrays, wouldn't it? Isn't that wasteful? Does Numpy provide an efficient way of doing that without creating a redundant array?

Thanks for your help,

Ram Rachum.