如何将字符串列表转换为数值型的numpy数组?

12

我希望能够计算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个回答

13

你想要使用astype函数

NA = NA.astype(float)

10

你有一个字符串列表

你创建了一个字符串数组

你需要一个浮点数数组进行后处理;因此,在创建数组时指定数据类型,它会在创建时将字符串转换为浮点数

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


1
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
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


2
只是一点提示:这在Python 3中不起作用,因为map不会返回一个列表。 - chthonicdaemon

1

将字符串转换为浮点数,最简单的方法是使用列表推导式:

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)

0

这是它:

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)

希望这可以帮到你!基本上,你没有使用min和max函数,并且列表中的字符串必须是整数。

如果列表无法更改,而你必须将其保留为字符串,那该怎么办?尽量不要做出假设。 - rayryeng
这样不行,因为你没有将值转换,而是没有将它们放入列表中! - chthonicdaemon

0
你可以使用loadtxt,它甚至可以处理包含数字的多行文本列表。
import numpy
A = ['33.33', '33.33', '33.33', '33.37']
NA = numpy.loadtxt(A)
B = ['33.33 33.33\n', '33.33 33.37\n']
NB = numpy.loadtxt(B)

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接