首页 > 解决方案 > python ndarray什么是返回值

问题描述

我使用了一个不同的库,我希望得到像这个函数的输出一样的结果。这是一个ndarray吗? https://graph-tool.skewed.de/static/doc/stats.html#graph_tool.stats.vertex_hist

>>> a=gt.vertex_hist(g, "out")
>>> print(gt.vertex_hist(g, "out"))

[
  array([  5.,  32.,  85., 148., 152., 182., 160., 116.,  53.,  25.,  23.,  13.,   3.,   2.,   1.]),
  array([  0,     1,    2,    3,    4,    5,    6,    7,    8,    9,   10,   11,   12,   13,   14,   15],
  dtype=uint64)
]

以下函数来自 matplotlib.pyplot,返回两个不同变量中的计数和 bin:

    counts, bins, bars = plt.hist(list(nx.dict(degree(G)).values()),histtype='stepfilled')

    //output
    [0.0, 0.0, 0.0, 0.0, 0.0, 5.0, 0.0, 0.0, 0.0, 0.0]
    [3.5, 3.6, 3.7, 3.8, 3.9, 4.0, 4.1, 4.2, 4.3, 4.4, 4.5]

如何将两个列表组合在一个对象/变量中,或者我是否可以理解以下表达式具有哪些值:

for i in range(0,len(a[0])):
    v = a[1][i]
    c = a[0][i]

标签: pythonpython-3.xmatplotlibhistogramnumpy-ndarray

解决方案


对于您的第一个问题,gt.vertex_hist(g, "out")返回list带有 2 个元素的 a ,每个元素都是ndarray. 文档中也提到了这一点。

现在下面的表达式,我不确定目的:

for i in range(0,len(a[0])):
    v = a[1][i]
    c = a[0][i]

假设两个 ndarris 总是具有相同的大小,这只是迭代第一个 ndarray 的长度。它将第一个 ndarray i,e 的当前索引值分配给[ 5., 32., 85., 148., 152., 182., 160., 116., 53., 25., 23., 13., 3., 2., 1.]c将第二个 ndarray 的当前索引值分配给v。但每次它都覆盖它,所以vc只会分别保存最后一个元素,即 1 和 15。我认为他们应该附加它。


推荐阅读