मैं पाइथन में जाली मॉडल (जाली बोल्टज़मान) के लिए सिमुलेशन को लागू करने की कोशिश कर रहा हूं। जाली की प्रत्येक साइट में कई गुण होते हैं, और कुछ नियमों के अनुसार पड़ोसी साइटों के साथ बातचीत करते हैं। मुझे लगा कि यह सभी गुणों के साथ कक्षा बनाने और उस वर्ग के उदाहरणों का ग्रिड बनाने के लिए चालाक हो सकता है। (जैसा कि मैंने अजगर के साथ अनुभवहीन हूँ, यह नहीं एक अच्छा विचार बिल्कुल हो सकता है, तो मेरे दृष्टिकोण पर टिप्पणी करने के लिए स्वतंत्र महसूस।)वस्तुओं की numpy सरणी
यहाँ मैं क्या कर रहा
class site:
def __init__(self,a,...):
self.a = a
.... other properties ...
def set_a(self, new_a):
self.a = new_a
की एक खिलौना उदाहरण है
अब मैं ऐसी साइटों के 2 डी/3 डी जाली (ग्रिड) से निपटना चाहता हूं इसलिए मैंने निम्नलिखित करने की कोशिश की (यहां एक उदाहरण के रूप में 2 डी 3x3 ग्रिड है, लेकिन सिमुलेशन में मुझे> 1000x1000X1000 के क्रम की आवश्यकता होगी)
lattice = np.empty((3,3), dtype=object)
lattice[:,:] = site(3)
अब समस्या यह है कि प्रत्येक जाली बिंदु एक ही उदाहरण को संदर्भित करता है, उदाहरण के लिए
lattice[0,0].set_a(5)
जाली [0,2] .a से 5 के मूल्य को भी सेट करेगा। यह व्यवहार अवांछित है। समस्या प्रत्येक ग्रिड बिंदु पर मैं पाश कर सकते हैं से बचने और, तत्व द्वारा वस्तुओं तत्व आवंटित
for i in range(3):
for j in range(3):
lattice[i,j] = site(a)
की तरह लेकिन वहाँ एक बेहतर तरीका (लूप को शामिल नहीं) एक बहुआयामी सरणी के लिए आवंटित करने के लिए वस्तुओं है करने के लिए?
धन्यवाद
यदि आप> 1000x1000X1000 सरणी से निपट रहे हैं, _don't_ ऑब्जेक्ट सरणी का उपयोग करें !! यह "सामान्य" numpy सरणी का उपयोग करने की तुलना में स्मृति की भारी मात्रा का उपयोग करेगा। ऑब्जेक्ट एरे वे नहीं हैं जो आप यहां चाहते हैं ... –
सिमुलेशन द्वारा मुझे लगता है कि आप द्रव सिमुलेशन का मतलब है? यदि ऐसा है, तो मैं आपको अपने दृष्टिकोण पर पुनर्विचार करने की सलाह दूंगा। शायद आपके सरणी के तत्व संख्यात्मक होना चाहिए, इसलिए आप रैखिक बीजगणित की सभी शक्तियों का उपयोग कर सकते हैं ;-)। कण प्रचार और टकराव की प्रक्रिया वैश्विक स्तर पर की जानी चाहिए! कोई भी स्थानीय ऑब्जेक्ट जाली किसी उचित गणना समय में इसे संभालने में सक्षम नहीं है। बस क्रूर, वास्तव में नहीं जानते कि आप क्या लक्ष्य कर रहे हैं ;-)। धन्यवाद – eat
@eat: मैं तरल सिमुलेशन कर रहा हूँ। मैं साइट्स के जेनेरिक ग्रिड को कोड करना चाहता था, जहां सभी स्थानीय गुणों को कक्षा में एकत्र किया गया था (टक्कर मेरी पुस्तक में स्थानीय है, प्रचार नहीं है), लेकिन मुझे लगता है कि आप ठीक बाद में हैं। कम से कम bpowah मुझे सिखाया कि कैसे __init__ समारोह vectorize :) – jonalm