import PyCA.Core as ca grid = ca.GridInfo(ca.Vec3Di(20, 20, 20), ca.Vec3Df(1.0, 1.0, 1.0), ca.Vec3Df(0.0, 0.0, 0.0)) grid = ca.GridInfo(ca.Vec3Di(20, 20, 20)) #equivalent memType = ca.MEM_DEVICE #for GPU Memory Im1 = ca.Image3D(grid, memType) Im2 = ca.Image3D(grid, memType) print Im1 VF1 = ca.Field3D(Im1.grid(), Im1.memType()) VF2 = ca.Field3D(Im1.grid(), Im1.memType()) print VF1 grid2 = ca.GridInfo(ca.Vec3Di(20, 20, 20), ca.Vec3Df(.5, .5, .5), ca.Vec3Df(-19.0, -19.0, -19.0)) memTypeCPU = ca.MEM_HOST Im1.setGrid(grid2) Im1.toType(memTypeCPU) print Im1 Im1.setGrid(grid) #Change back Im1.toType(ca.MEM_DEVICE) ca.SetMem(Im1, 1.0) #for an Image of all ones ca.SetMem(VF1, ca.Vec3Df(1.0, 2.0, 3.0)) #For a Field that is (1, 2, 3) everywhere ca.SetToZero(VF1) # V Field where each element is (0, 0, 0) ca.SetToIdentity(VF1) # H Field where each element (x, y, z) ca.SetMem(Im1, 4.0) ca.Copy(Im2, Im1) # element-wise copy, Im2 = Im1 ca.Copy(VF1, Im2, 1) #copy into the y field: VF1[:,:,:,1] = Im2 ca.Copy(Im2, VF1, 2) #copy from the y field: import numpy as np import PyCA.Common as common np_arr = np.array([[1, 2, 3], [4, 5, 6], [7, 8, 9]]) #create sample 3x3 numpy array Im2 = common.ImFromNPArr(np_arr, ca.MEM_DEVICE) #create Image3D from the numpy array print Im2.grid() np_arr_2D = np.zeros((20, 20, 2)) VF_2D = common.FieldFromNPArr(np_arr_2D, ca.MEM_DEVICE) print VF_2D.grid() np_arr_3D = np.zeros((20, 20, 20, 3)) VF_3D = common.FieldFromNPArr(np_arr_3D, ca.MEM_DEVICE) print VF_3D.grid() Im = ca.Image3D(ca.GridInfo(ca.Vec3Di(4, 4, 1)), ca.MEM_HOST) ca.SetMem(Im, 0.0) Imnp = Im.asnp() # now we can treat Imnp like we would any numpy array Imnp[1:3, 1:3, :] = 5.0 print Im print np.squeeze(Imnp) print type(Imnp) Imnp2 = Im.asnp().copy()