मैं मूल रूप से numpy के रीशेप फ़ंक्शन को फिर से बनाने की कोशिश कर रहा हूं। उपयोगकर्ता एक सूची और एक टपल में प्रवेश करता है। टपल मैट्रिक्स के आयाम को तय करता है।
पंक्तियों और स्तंभों को खोजने का मेरा विचार है:
टुपल्स इंडेक्स के पहले या दूसरे तत्व पर इनपुट की गई सूची की लंबाई लें। तो यदि टुपल्स पहला तत्व 3 है तो इसे पहले 3 तत्वों को सरणी के लेन लेना चाहिए।
def reshape(array: list, rows_columns: tuple):
columns = [len(array(rows_columns[1]))]
rows = [len(array(rows_columns[0]))]
matrix = (rows, columns)
return matrix
reshape([1, 2, 3, 4], (2, 2))
लेकिन यह संभव नहीं है मुझे TypeError मिलता है: 'सूची' ऑब्जेक्ट कॉल करने योग्य नहीं है। मैं सिर्फ यह जानना चाहता था कि क्या मैं इसके बारे में गलत सोच रहा हूं।
2 जवाब
मुझे लगता है कि आपको इसके बारे में ऐसा ही सोचना चाहिए। कोड स्थिरता के लिए सामने वाले तर्कों का थोड़ा सा सत्यापन करता है। यह तब पारित array
के माध्यम से लूप करता है जहां प्रत्येक टुकड़ा (एक नई सूची) अगली पंक्ति होगी और जिसका आकार कॉलम चौड़ाई है और उस नई सूची को प्रारंभिक रूप से खाली results
सूची में जोड़ा जाता है ( देखें list.append):
def reshape(array: list, rows_columns: tuple):
l = len(array)
assert len(rows_columns) == 2
n_rows = rows_columns[0]
n_columns = rows_columns[1]
assert n_rows * n_columns == l
results = []
index = 0
for _ in range(n_rows):
results.append(array[index:index+n_columns])
index += n_columns
return results
print(reshape([1, 2, 3, 4], (2, 2)))
print(reshape([1, 2, 3, 4], (4, 1)))
print(reshape([1, 2, 3, 4], (1, 4)))
print(reshape([1, 2, 3, 4, 5, 6, 7, 8], (4, 2)))
प्रिंट:
[[1, 2], [3, 4]]
[[1], [2], [3], [4]]
[[1, 2, 3, 4]]
[[1, 2], [3, 4], [5, 6], [7, 8]]
import math
import typing as t
def reshape(sequence: t.Sequence, shape: t.Tuple[int, ...]) -> t.Sequence:
assert len(sequence) == math.prod(shape)
for n in shape[:-1]:
sequence = [sequence[i:i + n] for i in range(0, len(sequence), n)]
return sequence
संबंधित सवाल
जुड़े हुए प्रश्न
नए सवाल
python
पायथन एक बहु-प्रतिमान है, गतिशील रूप से टाइप किया हुआ, बहुउद्देशीय प्रोग्रामिंग भाषा है। यह एक साफ और एक समान वाक्यविन्यास सीखने, समझने और उपयोग करने के लिए त्वरित होने के लिए डिज़ाइन किया गया है। कृपया ध्यान दें कि अजगर 2 आधिकारिक तौर पर 01-01-2020 के समर्थन से बाहर है। फिर भी, संस्करण-विशिष्ट पायथन सवालों के लिए, [अजगर -२.०] या [अजगर -३.x] टैग जोड़ें। पायथन वेरिएंट (जैसे, ज्योथन, PyPy) या लाइब्रेरी (उदा।, पांडस और न्यूमपी) का उपयोग करते समय, कृपया इसे टैग में शामिल करें।