%load_ext watermark %watermark def inside_hypercube(x_vec, unit_len=1): """ Function to check if a point lies inside a hypercube.""" for ele in x_vec: if abs(ele) > (unit_len/2): return False return True samples_3d = [ [0, 0, 0], [0.2, 0.2, 0.2], [0.1, -0.1, -0.3], [-1.2,0.3,-0.3], [0.8,-0.82,-0.9], [1, 0.6, -0.7], [0.8,0.7,0.2], [0.7,-0.8,-0.45], [-0.3, 0.6, 0.9], [0.7,-0.6,-0.8] ] %matplotlib inline inside = [] outside = [] for vec in samples_3d: if inside_hypercube(vec, unit_len=1): inside.append(vec) else: outside.append(vec) from mpl_toolkits.mplot3d import Axes3D import matplotlib.pyplot as plt import numpy as np from itertools import product, combinations fig = plt.figure(figsize=(7,7)) ax = fig.gca(projection='3d') ax.set_aspect("equal") for row in inside: ax.scatter(row[0], row[1], row[2], color="r", s=50, marker='^') for row in outside: ax.scatter(row[0], row[1], row[2], color="k", s=50) # Plot Cube centered at the coordinate origin X=0, Y=0, Z=0 h = [-0.5, 0.5] for s, e in combinations(np.array(list(product(h,h,h))), 2): if np.sum(np.abs(s-e)) == h[1]-h[0]: ax.plot3D(*zip(s,e), color="g") ax.set_xlim(-1.5, 1.5) ax.set_ylim(-1.5, 1.5) ax.set_zlim(-1.5, 1.5) plt.show()