Python3 TypeError: only size-1 arrays can be converted to Python scalars

news/2024/10/19 23:35:59/

问题:在用python3使用knn.train(trainData, responses)的时候,可能会产生错误:TypeError: only size-1 arrays can be converted to Python scalars

newcomer = np.random.randint(0, 100, (1, 2)).astype(np.float32)
plt.scatter(newcomer[:, 0], newcomer[:, 1], 80, 'g', 'o')
knn = cv2.ml.KNearest_create()
knn.train(trainData, responses)

报错信息:

---------------------------------------------------------------------------
TypeError                                 Traceback (most recent call last)
<ipython-input-22-3bcbba22ba1e> in <module>()2 plt.scatter(newcomer[:, 0], newcomer[:, 1], 80, 'g', 'o')3 knn = cv2.ml.KNearest_create()
----> 4 knn.train(trainData, responses)5 TypeError: only size-1 arrays can be converted to Python scalars

解决:将knn.train(trainData, responses)替换为:

              knn.train(trainData, cv2.ml.ROW_SAMPLE, responses)

分析:

        在python3中,knn.train需要传入layout参数,如第二种构造方法

Docstring:
train(trainData[, flags]) -> retval
.   @brief Trains the statistical model
.   
.   @param trainData training data that can be loaded from file using TrainData::loadFromCSV or
.   created with TrainData::create.
.   @param flags optional flags, depending on the model. Some of the models can be updated with the
.   new training samples, not completely overwritten (such as NormalBayesClassifier or ANN_MLP).train(samples, layout, responses) -> retval
.   @brief Trains the statistical model
.   
.   @param samples training samples
.   @param layout See ml::SampleTypes.
.   @param responses vector of responses associated with the training samples.
Type:      builtin_function_or_method

变更样例:

knn.train(trainData, cv2.ml.ROW_SAMPLE, responses)

参考文章:http://www.itkeyword.com/doc/6947006191723413x615/knn-train-in-cv2-with-opencv-3-0

说明:问题产生的环境
           Python版本:3.6.5
           OpenCV版本:3.4.2

转自:https://blog.csdn.net/yuxuan_08/article/details/87966958


http://www.ppmy.cn/news/317253.html

相关文章

python np.argsort()(::-1)

python np.argsort()(::-1) 定义一个array数据。 import numpy as np xnp.array([1,4,3,-1,6,9])现在我们可以看看argsort()函数的具体功能是什么&#xff1a; x.argsort() #输出x中元素从小到大排列的对应的index(索引) array([3, 0, 2, 1, 4, 5], dtypeint64)输出定义为ya…

np.argsort 用法总结

np.argsort 本文是根据 python 自带的 np.argsort 代码示例整理总结&#xff0c;博主自认为目前应该是对该函数比较全面的一个解释介绍。若有不当之处请留言。 def argsort(a, axis-1, kindquicksort, orderNone):"""返回对数组排序的索引。使用 “kind” 关键…

sizeof 数组与指针

sizeof的定义&#xff1a; sizeof是C/C中的一个操作符&#xff08;operator&#xff09;&#xff0c;简单的说其作用就是返回一个对象或者类型所占的内存字节数。 MSDN上的解释为&#xff1a; The sizeof keyword gives the amount of storage, in bytes, associated with a…

python: numpy-- 函数 argsort 用法

argsort() 函数将数组的值从小到大排序后&#xff0c;并按照其相对应的索引值输出 举例说明&#xff1a; 一维数组 >>> a array([3,1,2]) >>> argsort(a) array([1, 2, 0])二维数组 >>> b array([[1,2],[2,3]]) >>> argsort(b,axis1) …

np.argsort()函数详细解析

一、np.argsort()用法&#xff1a; np.argsort(a, axis-1, kindquicksort, orderNone)函数功能&#xff1a;将a中的元素从小到大排列&#xff0c;提取其在排列前对应的index(索引)输出。 二、举例&#xff1a; 1、一维数组 先定义一个array数组x&#xff0c;然后使用函数 i…

np.argsort详解

说明 numpy.argsort(a, axis-1, kindquicksort, orderNone) 功能: 将矩阵a按照axis排序&#xff0c;并返回排序后的下标参数: a:输入矩阵&#xff0c; axis:需要排序的维度返回值: 输出排序后的下标 实例 >>> x np.array([3, 1, 2]) >>> np.argsort(x) a…

第10讲:深入剖析 Agent 插件原理,无侵入性埋点

AbstractClassEnhancePluginDefine 核心实现 在开始之前&#xff0c;先简单回顾上一课时中关于 AbstractClassEnhancePluginDefine 的一个核心知识点&#xff1a;AbstractClassEnhancePluginDefine 是所有插件的父类&#xff0c;SkywalkingAgent.Transformer 会通过其 enhance…

Python3:numpy模块中的argsort()函数

Python3&#xff1a;numpy模块中的argsort()函数 转载请注明作者和出处&#xff1a;http://blog.csdn.net/u011475210操作系统&#xff1a;WINDOWS 10软件版本&#xff1a;python-3.6.2-amd64编  者&#xff1a;WordZzzz argsort函数是Numpy模块中的函数&#xff1a; >&g…