मुझे गणितीय सूत्रों से आने वाले प्रत्येक मामले में फ्लोट के साथ विशाल (उदा। 96 गो, 72000 पंक्तियां * 72000 कॉलम) सरणी बनाना और भरना है। सरणी के बाद गणना की जाएगी।विशाल numpy 2 डी-सरणी बनाने और भरने का सबसे तेज़ तरीका?
import itertools, operator, time, copy, os, sys
import numpy
from multiprocessing import Pool
def f2(x): # more complex mathematical formulas that change according to values in *i* and *x*
temp=[]
for i in combine:
temp.append(0.2*x[1]*i[1]/64.23)
return temp
def combinations_with_replacement_counts(n, r): #provide all combinations of r balls in n boxes
size = n + r - 1
for indices in itertools.combinations(range(size), n-1):
starts = [0] + [index+1 for index in indices]
stops = indices + (size,)
yield tuple(map(operator.sub, stops, starts))
global combine
combine = list(combinations_with_replacement_counts(3, 60)) #here putted 60 but need 350 instead
print len(combine)
if __name__ == '__main__':
t1=time.time()
pool = Pool() # start worker processes
results = [pool.apply_async(f2, (x,)) for x in combine]
roots = [r.get() for r in results]
print roots [0:3]
pool.close()
pool.join()
print time.time()-t1
- बना सकते हैं और इस तरह के विशाल numpy सरणी को भरने के लिए सबसे तेज़ तरीका क्या है? भरने के बाद कुल मिलाकर numpy array में परिवर्तित करें?
- क्या हम गणना कर सकते हैं कि 2 डी-सरणी के मामलों/कॉलम/पंक्तियां सरणी भरने के लिए स्वतंत्र हैं? मल्टीप्रोसेसिंग का उपयोग करके इस तरह के गणना को अनुकूलित करने के लिए सुराग/ट्रेल्स?
यह वास्तविक समय होने की जरूरत है या आप इसे गणना कर सकते हैं ऑफ़लाइन और उदाहरण का उपयोग करें इसे पढ़ने के लिए अचार? –
मैं रीयल-टाइम बनना पसंद करता हूं लेकिन अगर पिकलिंग तेज है, तो मुझे कोई फर्क नहीं पड़ता ... उम्मीद है कि मैं आपका प्रश्न अच्छी तरह से समझ गया हूं? – sol