python - in numpy what is the multi dimensional equivalent of take -
i have bit of code
def build_tree_base(blocks, x, y, z): indicies = [ (x ,z ,y ), (x ,z+1,y ), (x ,z ,y+1), (x ,z+1,y+1), (x+1,z ,y ), (x+1,z+1,y ), (x+1,z ,y+1), (x+1,z+1,y+1), ] children = [blocks[i] in indicies] return node(children=children)
where blocks 3 dimensional numpy array.
what i'd replace list comprehension numpy.take, take seems deal single dimension indices. there take work multidimensional indices?
also know transpose, slice , reshape, slow i'm looking better option.
how taking 2x2x2 slice, flat
?
import numpy np blocks = np.arange(2*3*4.).reshape((2,3,4)) i,j,k = 0,1,2 print [x x in blocks[i:i+2, j:j+2, k:k+2].flat]
(flat
iterator; expand this, or np.fromiter()
, or let node iter on it.)
Comments
Post a Comment