मेरे पास अंक का एक सेट है और उत्तल हल ढूंढना चाहते हैं। जब मैं उन्हें scipy.spatial (या तो ConvexHull या Delaunay) देने के लिए, मैं सिर्फ अंक के मूल सेट मिलता है। निर्माण से, यह मामला नहीं होना चाहिए।scipy.spatial में उत्तल hull routines मुझे वापस अंक के अपने मूल सेट देता है
यहां the points एक मसालेदार numpy सरणी के रूप में हैं। ,
import pickle
from scipy import spatial
import matplotlib.pyplot as plt
points = pickle.load(open("points.p", "rb"))
hullpoints = spatial.ConvexHull(points).points
# plot points
fig = plt.figure()
ax = fig.gca(projection='3d')
# ax.plot(points[:, 0], points[:, 1], points[:, 2], 'r.') # original points
ax.plot(hullpoints[:, 0], hullpoints[:, 1], hullpoints[:, 2], 'r.') # convex hull of points
# set labels and show()
ax.set_xlabel('Player 1')
ax.set_ylabel('Player 2')
ax.set_zlabel('Player 3')
plt.show()
जाहिर है इन बातों में से कुछ उत्तल पतवार को आंतरिक रहे हैं और spatial.ConvexHull (अंक) या spatial.Delaunay (अंक) के माध्यम से हटा दिया जाना चाहिए के रूप में दिया 2 डी उदाहरण में किया: मेरे कोड नीचे दिया गया है here।
क्या किसी को पता है कि मुझे अंक का मूल सेट क्यों मिल रहा है? मैं बाहरी बिंदुओं को ढूंढ सकता हूं और केवल उन चीजों को साजिश कर सकता हूं (अंतिम लक्ष्य बिंदुओं द्वारा अनुमानित बाहरी आकार के लिए एक सतह साजिश है), लेकिन ऐसा लगता है कि scipy.spatial ऐसा करने में सक्षम होना चाहिए।
यह शायद है 'hull.points [np.unique (hull.simplices)]' कि वह उत्तल पतवार में अद्वितीय अंक की वास्तविक सूची प्राप्त करने के कॉल करने के लिए चाहता है। – Jaime
यह करता है! बहुत बहुत धन्यवाद। – benten