आपका linspace
देख है वास्तव में है जैसे कि यह np.linspace
हो सकता है लग रहा है।
z = f(x[:, np.newaxis], y)
उदाहरण के लिए::
>>> import numpy as np
>>> x = np.linspace(0, 9, 10)
>>> y = np.linspace(0, 90, 10)
>>> x[:, np.newaxis] + y # or f(x[:, np.newaxis], y)
array([[ 0., 10., 20., 30., 40., 50., 60., 70., 80., 90.],
[ 1., 11., 21., 31., 41., 51., 61., 71., 81., 91.],
[ 2., 12., 22., 32., 42., 52., 62., 72., 82., 92.],
[ 3., 13., 23., 33., 43., 53., 63., 73., 83., 93.],
[ 4., 14., 24., 34., 44., 54., 64., 74., 84., 94.],
[ 5., 15., 25., 35., 45., 55., 65., 75., 85., 95.],
[ 6., 16., 26., 36., 46., 56., 66., 76., 86., 96.],
[ 7., 17., 27., 37., 47., 57., 67., 77., 87., 97.],
[ 8., 18., 28., 38., 48., 58., 68., 78., 88., 98.],
[ 9., 19., 29., 39., 49., 59., 69., 79., 89., 99.]])
लेकिन आप भी दो linspace
के बजाय np.ogrid
इस्तेमाल कर सकते हैं:
आयात numpy यदि यह आप स्पष्ट रूप से पुनरावृति बिना NumPy सरणी पर काम कर सकता है एनपी
>>> x, y = np.ogrid[0:10, 0:100:10]
>>> x + y # or f(x, y)
array([[ 0, 10, 20, 30, 40, 50, 60, 70, 80, 90],
[ 1, 11, 21, 31, 41, 51, 61, 71, 81, 91],
[ 2, 12, 22, 32, 42, 52, 62, 72, 82, 92],
[ 3, 13, 23, 33, 43, 53, 63, 73, 83, 93],
[ 4, 14, 24, 34, 44, 54, 64, 74, 84, 94],
[ 5, 15, 25, 35, 45, 55, 65, 75, 85, 95],
[ 6, 16, 26, 36, 46, 56, 66, 76, 86, 96],
[ 7, 17, 27, 37, 47, 57, 67, 77, 87, 97],
[ 8, 18, 28, 38, 48, 58, 68, 78, 88, 98],
[ 9, 19, 29, 39, 49, 59, 69, 79, 89, 99]])
यह कुछ हद तक निर्भर करता है आप f
पर हैं। यदि इसमें math.sin
जैसे फ़ंक्शन शामिल हैं तो आपको उन्हें numpy.sin
द्वारा प्रतिस्थापित करने की आवश्यकता है।
तो इसके बारे में numpy
तो नहीं है या तो आप अपने विकल्प के साथ या जब पाशन वैकल्पिक enumerate
का उपयोग कर रहना चाहिए:
for idx1, ai in enumerate(a):
for idx2, bj in enumerate(b):
z[idx1][idx2] = f(ai, bj)
यह लाभ है कि आप को हार्डकोड करने के लिए अपने range
(या xrange
) या आवश्यकता नहीं है इनपुट के रूप में len(a)
का उपयोग करें। लेकिन सामान्य रूप से यदि कोई बड़ा प्रदर्शन अंतर नहीं है तब आपके कोड का उपयोग करके आप और अन्य विधि का उपयोग आसानी से समझ जाएगा। >numpy.array
रूपांतरण के लिए आवश्यक हैं -
अपने a
और b
तो numpy.array
रों हैं तो क्योंकि NumPy सरणी के बहुत तेजी से संसाधित कर सकते हैं अगर कोई list
< वहाँ एक महत्वपूर्ण प्रदर्शन अंतर हो जाएगा।
मैंने इसे ऊपर उठाया क्योंकि यह एक सबक है कि मैं खुद को सीख रहा हूं लेकिन अगर वे सिर्फ सूचियां हैं तो मुझे लगता है कि मेरा समाधान ओपी के कोड से बेहतर है क्योंकि यह अपरिवर्तनीय इटरेटर को हटा देता है। एक ही धारणा के साथ, गेहूं का जवाब अभी तक बेहतर है। – aaronasterling
इटेटर अभी भी वहां हैं। यह कुछ भी नहीं छोड़ता है। उस ने कहा कि मैं हर समय सूची समझ का उपयोग करता हूं, लेकिन अगर मुझे उन्हें घोंसला करना है तो मैं उन्हें विस्तारित करता हूं, इसलिए उन्हें पढ़ने में आसान लगता है। –