मैं औसत, न्यूनतम और अधिकतम A की गणना करने में सक्षम होना चाहता हूं:

 import numpy as np

 A = ['33.33', '33.33', '33.33', '33.37']

 NA = np.asarray(A)

 AVG = np.mean(NA, axis=0)

 print AVG

यह काम नहीं करता है, जब तक कि इसमें परिवर्तित नहीं किया जाता है:

A = [33.33, 33.33, 33.33, 33.37]

क्या यह रूपांतरण स्वचालित रूप से करना संभव है?

7
Cristian J Estrada 8 मार्च 2017, 07:42

6 जवाब

सबसे बढ़िया उत्तर

आप astype चाहते हैं

NA = NA.astype(float)
11
gzc 8 मार्च 2017, 08:54

आपके पास तार की एक सूची थी

आपने स्ट्रिंग्स की एक सरणी बनाई

पोस्ट प्रोसेसिंग के लिए आपको फ़्लोट्स की एक सरणी की आवश्यकता है; इसलिए जब आप अपनी सरणी बनाते हैं तो डेटा प्रकार निर्दिष्ट करते हैं और यह स्ट्रिंग्स को निर्माण पर तैरने में बदल देगा

import numpy as np

#list of strings
A = ['33.33', '33.33', '33.33', '33.37']
print A

#numpy of strings
arr = np.array(A)
print arr

#numpy of float32's
arr = np.array(A, dtype=np.float32)
print arr

#post process
print np.mean(arr), np.max(arr), np.min(arr)

>>>
['33.33', '33.33', '33.33', '33.37']
['33.33' '33.33' '33.33' '33.37']
[ 33.33000183  33.33000183  33.33000183  33.36999893]
33.34 33.37 33.33

https://docs.scipy.org/doc/numpy/user/basics.types.html

6
litepresence 8 मार्च 2017, 08:24
import numpy as np
A = ['33.33', '33.33', '33.33', '33.37']
# convert to float
arr = np.array(map(float, A)) 
# calc values
print np.mean(arr), np.max(arr), np.min(arr)

आउटपुट: 33.34 33.37 33.33

1
Serenity 8 मार्च 2017, 07:50
2
बस एक नोट: यह पायथन 3 में काम नहीं करेगा क्योंकि map एक सूची वापस नहीं करता है।
 – 
chthonicdaemon
8 मार्च 2017, 08:23

A = [float(v) for v in ['33.33', '33.33', '33.33', '33.37']]

या

A = np.array(['33.33', '33.33', '33.33', '33.37'], dtype=float)

1
yama3 8 मार्च 2017, 08:25

अपने स्ट्रिंग्स को फ़्लोट में बदलने के लिए, सूची बोध का सबसे सरल तरीका है:

A = ['33.33', '33.33', '33.33', '33.37']
floats = [float(e) for e in A]

अब आप एक सरणी में कनवर्ट कर सकते हैं:

array_A = np.array(floats)

बाकी शायद आप जानते हैं:

mean, min, max = np.mean(array_A), np.min(array_A), np.max(array_A)
1
chthonicdaemon 8 मार्च 2017, 08:26

यह रहा:

import numpy as np

A = ["33.33", "33.33", "33.33", "33.37"]
for i in range(0,len(A)):
    n = A[i]
    n=float(n)
    A[i] = n

NA = np.asarray(A)

AVG = np.mean(NA, axis=0)
maxx = max(A)
minn = min(A)

print (AVG)
print (maxx)
print (minn)

उम्मीद है की यह मदद करेगा!!! मूल रूप से, आपके पास न्यूनतम और अधिकतम के लिए कार्य नहीं थे और सूची में आपके तार पूर्णांक होने चाहिए

0
8 मार्च 2017, 08:25
क्या होगा यदि सूची को बदला नहीं जा सका और आपको इसे स्ट्रिंग्स के रूप में छोड़ना पड़ा? धारणा न बनाने का प्रयास करें।
 – 
rayryeng
8 मार्च 2017, 08:18
यह काम नहीं करता है, क्योंकि आप मूल्यों को परिवर्तित नहीं कर रहे हैं, लेकिन उन्हें सूची में नहीं डाल रहे हैं!
 – 
chthonicdaemon
8 मार्च 2017, 08:22