Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/311.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python numpy数组中的min函数_Python_Arrays_Numpy - Fatal编程技术网

Python numpy数组中的min函数

Python numpy数组中的min函数,python,arrays,numpy,Python,Arrays,Numpy,我试图从一维numpy数组中找到一个最小值,它看起来像: col = array(['6.7', '0.9', '1.3', '4', '1.8'],dtype='|S7'), 使用不起作用的col.min() 我按照视图函数的建议进行了尝试,但未能将“S7”识别为有效字段 处理这个问题的最好办法是什么?我应该在读取值或使用min函数时指定数据类型吗?问题在于您有一个字符串数组,而不是数字数组。因此,您需要首先将数组转换为适当的类型: In [38]: col.astype(np.float

我试图从一维numpy数组中找到一个最小值,它看起来像:

col = array(['6.7', '0.9', '1.3', '4', '1.8'],dtype='|S7'), 
使用不起作用的
col.min()

我按照视图函数的建议进行了尝试,但未能将“S7”识别为有效字段


处理这个问题的最好办法是什么?我应该在读取值或使用min函数时指定数据类型吗?

问题在于您有一个字符串数组,而不是数字数组。因此,您需要首先将数组转换为适当的类型:

In [38]: col.astype(np.float64).min()
Out[38]: 0.90000000000000002
我应该在读取值或使用min函数时指定数据类型吗


如果您知道输入是数字的,那么在读取数据时指定数据类型是有意义的。

问题在于您有一个字符串数组,而不是数字数组。因此,您需要首先将数组转换为适当的类型:

In [38]: col.astype(np.float64).min()
Out[38]: 0.90000000000000002
我应该在读取值或使用min函数时指定数据类型吗


如果您知道输入是数字的,那么在读取数据时指定数据类型是有意义的。

如果您不需要执行许多其他数字操作,并且您有理由选择以
str
格式驻留数据,您可以始终使用本机Python
min
max
对数据的普通
列表进行操作:

In [98]: col = np.asarray(['6.7', '0.9', '1.3', '4', '1.8'])

In [99]: col
Out[99]:
array(['6.7', '0.9', '1.3', '4', '1.8'],
      dtype='|S3')

In [100]: col.min()
---------------------------------------------------------------------------
TypeError                                 Traceback (most recent call last)
<ipython-input-100-1ce0c6ec1def> in <module>()
----> 1 col.min()

TypeError: cannot perform reduce with flexible type

In [101]: col.tolist()
Out[101]: ['6.7', '0.9', '1.3', '4', '1.8']

In [102]: min(col.tolist())
Out[102]: '0.9'

In [103]: max(col.tolist())
Out[103]: '6.7'
[98]中的
:col=np.asarray(['6.7','0.9','1.3','4','1.8'])
In[99]:col
出[99]:
数组(['6.7','0.9','1.3','4','1.8'],
数据类型=“| S3”)
In[100]:col.min()
---------------------------------------------------------------------------
TypeError回溯(最近一次调用上次)
在()
---->1列min()
TypeError:无法使用灵活类型执行reduce
在[101]中:托利斯上校()
输出[101]:['6.7','0.9','1.3','4','1.8']
In[102]:min(col.tolist())
输出[102]:“0.9”
In[103]:max(col.tolist())
Out[103]:“6.7”

一般来说,这不是处理数字数据的好方法,并且可能容易受到关于数组中驻留内容的许多错误假设的影响。但这只是另一种选择,如果你需要,或者如果你有特殊的原因使用字符串(例如,你只计算MIN和MAX,你所做的一切都是显示它们)。

In [98]: col = np.asarray(['6.7', '0.9', '1.3', '4', '1.8'])

In [99]: col
Out[99]:
array(['6.7', '0.9', '1.3', '4', '1.8'],
      dtype='|S3')

In [100]: col.min()
---------------------------------------------------------------------------
TypeError                                 Traceback (most recent call last)
<ipython-input-100-1ce0c6ec1def> in <module>()
----> 1 col.min()

TypeError: cannot perform reduce with flexible type

In [101]: col.tolist()
Out[101]: ['6.7', '0.9', '1.3', '4', '1.8']

In [102]: min(col.tolist())
Out[102]: '0.9'

In [103]: max(col.tolist())
Out[103]: '6.7'
[98]中的
:col=np.asarray(['6.7','0.9','1.3','4','1.8'])
In[99]:col
出[99]:
数组(['6.7','0.9','1.3','4','1.8'],
数据类型=“| S3”)
In[100]:col.min()
---------------------------------------------------------------------------
TypeError回溯(最近一次调用上次)
在()
---->1列min()
TypeError:无法使用灵活类型执行reduce
在[101]中:托利斯上校()
输出[101]:['6.7','0.9','1.3','4','1.8']
In[102]:min(col.tolist())
输出[102]:“0.9”
In[103]:max(col.tolist())
Out[103]:“6.7”

一般来说,这不是处理数字数据的好方法,并且可能容易受到关于数组中驻留内容的许多错误假设的影响。但是,这只是另一个选择,如果你需要或如果你有特殊的原因使用字符串(例如,你只计算最小和最大值,你所做的一切都是显示它们)。
>>> import numpy as np
>>> col = np.asarray(['6.7', '0.9', '1.3', '4', '1.8'])
>>> min(col,key=float)
'0.9'

另一种方法是将python内置的
min
函数与
关键字结合使用:

>>> import numpy as np
>>> col = np.asarray(['6.7', '0.9', '1.3', '4', '1.8'])
>>> min(col,key=float)
'0.9'

您对这里的字符串做了一些非常有力的假设:
min('00.0','0.9')
没有提供您想要的内容……此外,您不需要转换为列表来使用内置的
min
函数。如果它不能正确地迭代numpy数组,我会感到震惊。@mgilson我同意这需要一些(可能很糟糕的)假设。这就是我在回答中这么说的原因。@mgilson是的,
min
可以在平坦的NumPy数组上工作,但是如果它是二维的,即使其中一个维度的大小为1,它也不工作。是否有人想假设数组是扁平的取决于他们,但是使用
tolist()
它肯定会起作用。如果在二维数组上使用
tolist()
,那么
min
将为您提供列形式的min。您在这里对字符串做了一些非常有力的假设:
min('00.0','0.9')
没有给出您想要的值……而且,使用内置的
min
功能不需要转换为列表。如果它不能正确地迭代numpy数组,我会感到震惊。@mgilson我同意这需要一些(可能很糟糕的)假设。这就是我在回答中这么说的原因。@mgilson是的,
min
可以在平坦的NumPy数组上工作,但是如果它是二维的,即使其中一个维度的大小为1,它也不工作。是否有人想假设数组是扁平的取决于他们,但是使用
tolist()
它肯定会起作用。如果在二维数组上使用
tolist()
,则
min
将为您提供按列显示的分钟数。谢谢。这很有帮助。虽然我看到了一些值的汇总,但在@mgilson.Thank建议的使用key=float参数时,这些值并没有出现。这很有帮助。尽管我在值中看到了一些汇总,但在使用@mgilson建议的key=float参数时并没有出现。