Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/310.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 大小为(100,1)和(100,)的numpy数组之间有什么区别?_Python_Numpy - Fatal编程技术网

Python 大小为(100,1)和(100,)的numpy数组之间有什么区别?

Python 大小为(100,1)和(100,)的numpy数组之间有什么区别?,python,numpy,Python,Numpy,我有两个来自不同函数的变量,第一个a是: <class 'numpy.ndarray'> (100,) <class 'numpy.ndarray'> (100, 1) 如果我试图通过以下方式将它们关联起来: from scipy.stats import pearsonr p, r= pearsonr(a, b) 我得到: r = max(min(r, 1.0), -1.0) ValueError: The truth value of an array

我有两个来自不同函数的变量,第一个
a
是:

<class 'numpy.ndarray'>
(100,)
<class 'numpy.ndarray'>
(100, 1)
如果我试图通过以下方式将它们关联起来:

from scipy.stats import pearsonr
p, r= pearsonr(a, b)
我得到:

    r = max(min(r, 1.0), -1.0)
ValueError: The truth value of an array with more than one element is ambiguous. Use a.any() or a.all()
我的问题是:

  • a和b的区别是什么
  • 我该如何解决这个问题

  • 您需要在第一个数组上调用整形函数以
    。整形((100,1))
    整形将更改np数组的“shape”属性,这将使1D数组[1,2,3,…,100]变为2D数组[[1],[2],[3],…[100]

    (100,1)是长度为1的行的2D数组,如=
    [1],[2],[3],[4]]
    第二个是1d数组
    [1,2,3,4]

    a1 = np.array([[1],[2],[3],[4]])
    a2 = np.array([1, 2, 3, 4 ])
    

    第一个问题的答案:
    a
    是一个向量,
    b
    是一个矩阵。查看此stackoverflow链接了解更多详细信息:

    第二个问题的答案

    我认为将一种形式转换为另一种形式应该很好。对于您提供的函数,我想它需要向量,因此只需使用
    b=b来重塑b。重塑(-1)
    将其转换为单个维度(向量)。请看以下示例以供参考:

    >>将numpy作为np导入
    >>>从scipy.stats导入pearsonr
    >>>a=np.random.random((100,))
    >>>b=np.随机.随机((100,1))
    >>>打印(a.形状,b.形状)
    (100,) (100, 1)
    >>>p,r=pearsonr(a,b)
    回溯(最近一次呼叫最后一次):
    文件“”,第1行,在
    文件“C:\Users\xyz\Appdata\Local\Continuum\Anaconda3\lib\site packages\scipy\stats\stats.py”,第3042行,在pearsonr中
    r=最大值(最小值(r,1.0),-1.0)
    ValueError:包含多个元素的数组的真值不明确。使用a.any()或a.all()
    >>>b=b。重塑(-1)
    >>>p,r=pearsonr(a,b)
    >>>打印(p,r)
    0.10899671932026986 0.280372238354364
    
    的可能重复为了提供更好的答案,您应该解释原因。