python - Avoid creating new arrays as results for numpy/scipy operations? -


for doing repeated operations in numpy/scipy, there's lot of overhead because operation return new object.

for example

for in range(100):    x = a*x 

i avoid passing reference operation, in c

for in range(100):    np.dot(a,x,x_new) #x_new store result of multiplication    x,x_new = x_new,x 

is there way this? not mutiplication operations return matrix or vector.

see learning avoid unnecessary array copies in ipython books. there, note e.g. these guidelines:

a *= b 

will not produce copy, whereas:

a = * b 

will produce copy. also, flatten() copy, while ravel() copies if necessary , returns view otherwise (and should in general preferred). reshape() not produce copy, returns view.

furthermore, @hpaulj , @ali_m noted in comments, many numpy functions support out parameter, have @ docs. numpy.dot() docs:

out : ndarray, optional output argument.

this must have exact kind returned if not used. in particular, must have right type, must c-contiguous, , dtype must dtype returned dot(a,b). performance feature. therefore, if these conditions not met, exception raised, instead of attempting flexible.


Comments

Popular posts from this blog

asp.net mvc - SSO between MVCForum and Umbraco7 -

Python Tkinter keyboard using bind -

ubuntu - Selenium Node Not Connecting to Hub, Not Opening Port -