numpy
के बाद से पूर्णता के लिए यह उत्तर देने पर उत्तर दिया गया है, और अक्सर उच्च रैंक वाले सरणी से मूल्यों को जोड़ना उपयोगी होता है।
accepted answer रैंक 1. के किसी भी क्रम/सरणी के लिए अच्छा काम करता है हालांकि, अगर अनुक्रम एक list
की list
रों में के रूप में ऐसी ऐसी रैंक 2 या अधिक की एक numpy
सरणी के रूप में कई स्तरों (की है, लेकिन यह भी, या tuple
tuple
एस), प्रत्येक को प्रत्येक रैंक के माध्यम से फिर से शुरू करने की जरूरत है।
import numpy as np
a = np.array([[1, 2, 3], [4, 5, 6], [7, 8, 9]])
b = np.array([list('abc'), list('pdq'), list('xyz')])
c = np.array([[frobnicate(aval, bval) for aval, bval in zip(arow, brow)] for arow, brow in zip(a, b)])
और इसी अवधारणा एक ही आकार के दो आयामी नेस्टेड दृश्यों के किसी सेट के लिए काम करेंगे: नीचे एक 2 डी numpy
सरणी के साथ एक उदाहरण है
a = [[1, 2, 3], [4, 5, 6], [7, 8, 9]]
b = [list('abc'), list('pdq'), list('xyz')]
c = [[frobnicate(aval, bval) for aval, bval in zip(arow, brow)] for arow, brow in zip(a, b)]
यदि एक या नेस्टेड के दोनों
from itertools import zip_longest as zipl
a = [[], [4, 5, 6], [7, 8, 9]] # empty list in the first row
b = [list('abc'), list('pdq'), []] # empty list in the last row
c = [[frobnicate(aval, bval) for aval, bval in zipl(arow, brow)] for arow, brow in zipl(a, b)]
इसे पूरा करने के लिए, मैं 'future_builtins' का भी उल्लेख करूंगा। – georg
तो python3 में ज़िप में itertools.izip जैसा ही है? या यह सूचियों के आकार के आधार पर बदलता है? – will
@ विल्ल: हाँ, पायथन 3 में 'ज़िप' Python2 में 'itertools.izip' जैसा ही है। (यह सूची के आकार के साथ व्यवहार नहीं बदलता है।) पायथन 3 में पुराना 'ज़िप' व्यवहार प्राप्त करने के लिए, 'सूची (ज़िप (ए, बी))' का उपयोग करें। – unutbu