代码之家  ›  专栏  ›  技术社区  ›  Jason Chong

如何只调用numpy数组的内容?

  •  -2
  • Jason Chong  · 技术社区  · 6 年前

    我有一排麻木的

    array = [array([ 4.12101269], dtype=float32), array([ 4.44119978], dtype=float32), array([ 4.30688763], dtype=float32), array([ 4.80304432], dtype=float32), array([ 4.47734165], dtype=float32), array([ 4.88290167]]
    

    我只想得到

    array = [4.12101269, 4.44119978, 4.30688763, 4.80304432, 4.47734165, 4.88290167]
    

    有办法吗?

    我试过了

    array[]
    
    2 回复  |  直到 6 年前
        1
  •  0
  •   hpaulj    6 年前

    这看起来像一个数组列表,我可以用它重新创建:

    In [315]: alist = [array([ 4.12101269], dtype=float32), array([ 4.44119978], dty
         ...: pe=float32), array([ 4.30688763], dtype=float32), array([ 4.80304432],
         ...:  dtype=float32), array([ 4.47734165], dtype=float32), array([ 4.882901
         ...: 67])]
    In [316]: alist
    Out[316]: 
    [array([4.1210127], dtype=float32),
     array([4.4412], dtype=float32),
     array([4.3068876], dtype=float32),
     array([4.8030443], dtype=float32),
     array([4.4773417], dtype=float32),
     array([4.88290167])]
    

    concatenate 或其 hstack variant很好地将这些数组合并为一个:

    In [317]: np.hstack(alist)
    Out[317]: 
    array([4.12101269, 4.44119978, 4.30688763, 4.80304432, 4.47734165,
           4.88290167])
    

    np.array 也可以联接它们,但添加维度:

    In [318]: np.array(alist)
    Out[318]: 
    array([[4.12101269],
           [4.44119978],
           [4.30688763],
           [4.80304432],
           [4.47734165],
           [4.88290167]])
    

    但您可能有一个对象数组,我可以将其构造为:

    In [319]: arr = np.empty(len(alist), object)
    In [320]: arr[:] = alist
    In [321]: arr
    Out[321]: 
    array([array([4.1210127], dtype=float32), array([4.4412], dtype=float32),
           array([4.3068876], dtype=float32),
           array([4.8030443], dtype=float32),
           array([4.4773417], dtype=float32), array([4.88290167])],
          dtype=object)
    

    这个 repr str 显示不同。请注意以下缺少的逗号:

    In [322]: print(arr)
    [array([4.1210127], dtype=float32) array([4.4412], dtype=float32)
     array([4.3068876], dtype=float32) array([4.8030443], dtype=float32)
     array([4.4773417], dtype=float32) array([4.88290167])]
    

    但是 高温超导堆 仍然有效:

    In [323]: np.hstack(arr)
    Out[323]: 
    array([4.12101269, 4.44119978, 4.30688763, 4.80304432, 4.47734165,
           4.88290167])
    
        2
  •  1
  •   sacuL    6 年前

    你好像有一张单子 numpy 数组。在这种情况下,可以将转换为 麻木的 数组和调用 flatten :

    myarray = [np.array([ 4.12101269], dtype=float), np.array([ 4.44119978], dtype=float), np.array([ 4.30688763], dtype=float), np.array([ 4.80304432], dtype=float), np.array([ 4.47734165], dtype=float), np.array([ 4.88290167])]
    
    np.array(myarray).flatten()
    
    # array([ 4.12101269,  4.44119978,  4.30688763,  4.80304432,  4.47734165, 4.88290167])