एक संरचित सरणी दृष्टिकोण (अधूरा):
इनपुट recfunctions की एक विशेष पुस्तकालय:
In [441]: import numpy.lib.recfunctions as rf
दो संरचित सरणियों
In [442]: A = np.zeros((6,),[('x',int),('y',int)])
ओह, 'एक्स keys in
बी are float, so for consistency, let's make the
एक को परिभाषित करें 'साथ ही साथ तैरते हैं। फ्लोट्स और इनट्स को अनावश्यक रूप से मिश्रण न करें। rf.join_by
समारोह के डॉक्स पर
In [446]: A = np.zeros((6,),[('x',float),('y',int)])
In [447]: A['x']=np.arange(6)
In [448]: A['y']=np.arange(6)
In [449]: A
Out[449]:
array([(0., 0), (1., 1), (2., 2), (3., 3), (4., 4), (5., 5)],
dtype=[('x', '<f8'), ('y', '<i4')])
In [450]: B = np.zeros((6,),[('x',float),('z',float)])
In [451]: B['x']=np.linspace(.5,5.5,6)
In [452]: B['z']=np.linspace(.5,5.5,6)
In [453]: B
Out[453]:
array([(0.5, 0.5), (1.5, 1.5), (2.5, 2.5), (3.5, 3.5),
(4.5, 4.5), (5.5, 5.5)],
dtype=[('x', '<f8'), ('z', '<f8')])
देखो:
In [454]: rf.join_by?
एक outer
में शामिल होने के कार्य करें:
In [457]: rf.join_by('x',A,B,'outer')
Out[457]:
masked_array(data = [(0.0, 0, --) (0.5, --, 0.5) (1.0, 1, --) (1.5, --, 1.5) (2.0, 2, --)
(2.5, --, 2.5) (3.0, 3, --) (3.5, --, 3.5) (4.0, 4, --) (4.5, --, 4.5)
(5.0, 5, --) (5.5, --, 5.5)],
mask = [(False, False, True) (False, True, False) (False, False, True)
(False, True, False) (False, False, True) (False, True, False)
(False, False, True) (False, True, False) (False, False, True)
(False, True, False) (False, False, True) (False, True, False)],
fill_value = ( 1.00000000e+20, 999999, 1.00000000e+20),
dtype = [('x', '<f8'), ('y', '<i4'), ('z', '<f8')])
परिणाम एक नकाबपोश सरणी, नकाबपोश लापता मूल्यों के साथ है।
यही बात है, लेकिन मास्किंग के साथ बंद कर दिया:
In [460]: rf.join_by('x',A,B,'outer',usemask=False)
Out[460]:
array([(0. , 0, 1.00000000e+20), (0.5, 999999, 5.00000000e-01),
(1. , 1, 1.00000000e+20), (1.5, 999999, 1.50000000e+00),
(2. , 2, 1.00000000e+20), (2.5, 999999, 2.50000000e+00),
(3. , 3, 1.00000000e+20), (3.5, 999999, 3.50000000e+00),
(4. , 4, 1.00000000e+20), (4.5, 999999, 4.50000000e+00),
(5. , 5, 1.00000000e+20), (5.5, 999999, 5.50000000e+00)],
dtype=[('x', '<f8'), ('y', '<i4'), ('z', '<f8')])
अब हम भरने मूल्यों को स्पष्ट रूप से देखते हैं। 1e20
को np.nan
के साथ बदलने का एक तरीका होना चाहिए। को nan
के साथ बदलना गड़बड़ है, क्योंकि np.nan
एक फ्लोट मान है, पूर्णांक नहीं है।
कवर इस join_by
के तहत शायद पहली join
dtype
के साथ एक blank
सरणी पैदा कर रही है, और खेतों एक के बाद एक में भरने।
क्या आपके पास पांडा हैं? –
@ cᴏʟᴅsᴘᴇᴇᴅ मैं इसे इंस्टॉल कर सकता हूं, अधिक पैकेज कोई बड़ा सौदा नहीं है। –
MATLAB के साथ आप यह कैसे करेंगे? आप किस प्रकार की संरचना का उपयोग करेंगे? – hpaulj