I have two numpy arrays "Elements" and "nodes". My aim is to gather some data of these arrays.
I need to replace "Elements" data of the two last columns by the two coordinates contains
in "nodes" array. The two arrays are very huge, i have to automate it.
This posts refers to an old one: Replace data of an array by 2 values of a second array
with a difference that arrays are very huge (Elements: (3342558,5) and nodes: (581589,4)) and the previous way out does not work.
An example :
import numpy as np Elements = np.array([[1.,11.,14.],[2.,12.,13.]]) nodes = np.array([[11.,0.,0.],[12.,1.,1.],[13.,2.,2.],[14.,3.,3.]]) results = np.array([[1., 0., 0., 3., 3.], [2., 1., 1., 2., 2.]])
The previous way out proposed by hpaulj
e = Elements[:,1:].ravel().astype(int) n=nodes[:,0].astype(int) I, J = np.where(e==n[:,None]) results = np.zeros((e.shape,2),nodes.dtype) results[J] = nodes[I,:1] results = results.reshape(2,4)
But with huge arrays, this script does not work:
DepreciationWarning: elementwise comparison failed; this will raise an error in the future…