मेरे पास 2 एनपी सरणियाँ हैं जिनमें अंतराल [0,1] में मान हैं। मैं तीसरी सरणी बनाना चाहता हूं, जिसमें सबसे अधिक "आत्मविश्वास" मान शामिल हैं, जिसका अर्थ है तत्व के अनुसार, सरणी से संख्या जो 1 या 0 के करीब है। निम्नलिखित उदाहरण पर विचार करें:

[0.7,0.12,1,0.5]
[0.1,0.99,0.001,0.49]

तो मेरी निर्मित सरणी होगी:

[0.1,0.99,1,0.49]
3
Codevan 29 मार्च 2018, 10:49

1 उत्तर

अपना "आत्मविश्वास" उपाय बताने का दूसरा तरीका यह पूछना है कि दोनों में से कौन सी संख्या 0.5 से सबसे दूर है। अर्थात्, दोनों में से कौन सी संख्या x सबसे बड़ी abs(0.5 - x) उत्पन्न करती है। निम्नलिखित समाधान कॉलम के रूप में मूल सरणियों के साथ एक 2D सरणी c बनाता है। फिर हम abs(0.5 - c) के आधार पर एक बूलियन मास्क बनाते और लगाते हैं:

import numpy as np

a = np.array([0.7,0.12,1,0.5])
b = np.array([0.1,0.99,0.001,0.49])

# Combine
c = np.concatenate((a, b)).reshape((2, len(a))).T
# Create mask
b_or_a = np.asarray(np.argmax(np.abs((0.5 - c)), axis=1), dtype=bool)
mask = np.zeros(c.shape, dtype=bool)
mask[:, 0] = ~b_or_a
mask[:, 1] =  b_or_a
# Applt mask
d = c[mask]
print(d)  # [ 0.1   0.99  1.    0.49]
2
jmd_dk 29 मार्च 2018, 09:02