[Numpy-discussion] How to speed up array generating

V. Armando Sole sole at esrf.fr
Sun Jan 10 00:36:06 EST 2021


I guess the speed up, if any, will be machine dependent, but you can
give a try at: 

import numpy as np
import time
N = 3000
m_0 = np.arange(N)
t = time.time()
a = np.ones(N)
m_1 = np.outer(m_0, a).ravel()
m_2 = np.outer(a, m_0).ravel()
t = time.time() - t

On 2021-01-09 20:07, klark--kent at yandex.ru wrote:

> Hello. There is a random 1D array m_0 with size 3000, for example:
> 
> m_0 = np.array([0, 1, 2])
> 
> I need to generate two 1D arrays:
> 
> m_1 = np.array([0, 1, 2, 0, 1, 2, 0, 1, 2])
> m_2 = np.array([0, 0, 0, 1, 1, 1, 2, 2, 2])
> 
> Is there faster way to do it than this one:
> 
> import numpy as np
> import time
> N = 3
> m_0 = np.arange(N)
> 
> t = time.time()
> m_1 = np.tile(m_0, N)
> m_2 = np.repeat(m_0, N)
> t = time.time() - t
> 
> I tried other ways but they are slower or have the same time. Other NumPy operations in my code 10-100 times faster. Why the repeating an array is so slow? I need 10 times speed up. Thank you for your attantion to my problem.
> 
> _______________________________________________
> NumPy-Discussion mailing list
> NumPy-Discussion at python.org
> https://mail.python.org/mailman/listinfo/numpy-discussion
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://mail.python.org/pipermail/numpy-discussion/attachments/20210110/1b6cc09f/attachment.html>


More information about the NumPy-Discussion mailing list