Python 3.7 - 打印 NumPy 数组列表会在实际数组前面打印“array”。为什么?

我是编程新手,几乎不掌握术语,所以请原谅我可能遇到的任何基本问题。


我正在尝试列出数组的数组。


我在二维数组上编写了一个函数,该函数列出了数组中的最高值及其出现的点。这些点(最大值)形成数组[i,j],为了便于显示,我想将其收集到单个 numpy array 或 list 中max_p。据我所知,最明智的方法是使用numpy.append( max_p, [i,j] ). 问题在于它合并 [i,j])到max_p数组中,以便我得到单个值的数组而不是有序对。所以我决定将整个事情转换成一个列表。


在大多数情况下,这很有效——我得到了可以在一行中打印出来的有序对列表。


但是,大列表中的数组max_p不会打印为,比如说[a,b]。它们被打印为array([a,b]). 无论我是否使用max_p.tolist()或 ,都会发生这种情况list(max_p)。


当然,如果没有实际的代码,这些都没有意义,所以它是:


def maxfinder_2D(array):

    maxima_array = numpy.array([]) # placeholder array

    for i in range(0, 422): # side note: learn how to get dim.s of 

                            # a multidimensional array

        x_array = array [i,:] # set array to be the i-th row

       # row_max = numpy.append(row_maxfinder_1D(x_array))

        maxima_array = numpy.append(maxima_array, numpy.array([maxfinder_1D(x_array)]))

            # We construct a new array, maxima_array, to list the 

            # maximum of every row in the plot.

            # The maximum, then, must be the maximum of this array.

    max_2D = maxfinder_1D(maxima_array)

    print("The maximum value in the image is: ", max_2D)

    global max_p

    max_p = []

    # This gives us the maximum value. Finding its location is another

    # step, though I do wish I could come up with a way of finding the

    # location and the maximum in a single step.


这是输出(部分):


The maximum value in the image is:  255.0 The function attains its maximum of  255.0  on  [array([200., 191.]), array([200., 192.]), array([201., 190.]), array([201., 193.]), array([202., 190.]), array([202., 193.]), array([203., 193.]), array([204., 191.]),...


我希望数组显示为简单的,例如[200. , 191.].


为什么会出现这种“神器”呢?它与 numpy 如何将数组与列表相关联吗?


ibeautiful
浏览 131回答 2
2回答

素胚勾勒不出你

Python对象有repr和str显示方法In [1]: x = np.arange(3)In [2]: xOut[2]: array([0, 1, 2])In [3]: repr(x)Out[3]: 'array([0, 1, 2])'In [4]: str(x)Out[4]: '[0 1 2]'In [5]: print(x)[0 1 2]对于列表,它们[,]对于列表本身和repr元素是相同的:In [6]: alist = [x]In [7]: alistOut[7]: [array([0, 1, 2])]In [8]: repr(alist)Out[8]: '[array([0, 1, 2])]'In [9]: str(alist)Out[9]: '[array([0, 1, 2])]'

白猪掌柜的

也许您可以尝试使用数组的字符串表示形式print("The function attains its maximum of ",maxfinder_2D(img)," on ", np.array2string(max_p))
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python