मैं सरणी में सरणी के पहले और दूसरे मानों को फ़्लिप करना चाहता हूं। सरणी के माध्यम से लूप करना एक बेवकूफ समाधान है। ऐसा करने का सही तरीका क्या है?

import numpy as np
contour = np.array([[1, 4],
                    [3, 2]])

flipped_contour = np.empty((0,2))
for point in contour:
    x_y_fipped = np.array([point[1], point[0]])
    flipped_contour = np.vstack((flipped_contour, x_y_fipped))

print(flipped_contour)

[[4. 1.]
[2. 3.]]
5
waspinator 29 मार्च 2018, 02:26

2 जवाब

आप numpy इंडेक्सिंग:

contour[:, ::-1]
3
jpp 28 मार्च 2018, 23:34

COLDSPEED's answer के अलावा, यदि हम केवल पहले और दूसरे कॉलम को स्वैप करना चाहते हैं, पूरे सरणी को फ़्लिप करने के लिए नहीं:

contour[:, :2] = contour[:, 1::-1]

यहाँ contour[:, 1::-1], सरणी contour के पहले दो स्तंभों द्वारा उल्टे क्रम में बनाई गई सरणी है। इसके बाद इसे पहले दो कॉलम (contour[:, :2]) को असाइन किया जाता है। अब पहले दो कॉलम की अदला-बदली की जाती है।

सामान्य तौर पर, iवें और jवें कॉलम को स्वैप करने के लिए, निम्न कार्य करें:

contour[:, [i, j]] = contour[:, [j, i]]
4
ducminh 29 मार्च 2018, 08:21