簡體   English   中英

如何在Python中壓縮兩個數組並保持原始形狀?

[英]How to zip two arrays in Python and keep the original shape?

我有兩個不同的數組,我想彼此組合,以便新數組的形狀仍與每個舊數組相同。

    import numpy as np

    x = (['1','2','3','4','5','6','7','8','9'])
    y = (['a','b','c','d','e','f','g','h','i'])
    z = np.array(zip(x,y))        
    print z 
    print np.shape(z)

讓我

   [['1' 'a']
    ['2' 'b']
    ['3' 'c']
    ['4' 'd']
    ['5' 'e']
    ['6' 'f']
    ['7' 'g']
    ['8' 'h']
    ['9' 'i']]
    (9, 2)

我想要

    [['1 a']
     ['2 b']
     ['3 c']
     ['4 d']
     ['5 e']
     ['6 f']
     ['7 g']
     ['8 h']
     ['9 i']]
     (9,)

因為我需要新數組只有一個維才能進行進一步處理。 因為我是新手,所以我認為zip()函數可能不合適,但是我也嘗試了.join()函數,但我無法以這種方式解決。

我認為您只需在拉鏈后加入即可。 試試這個列表理解:

z = [" ".join(item) for item in zip(x, y)]

這是你的意思嗎?

x =(['1','2','3','4','5','6','7','8','9'])
y = (['a','b','c','d','e','f','g','h','i'])
z =np.array(zip(x,y))
print z
print z[:,0].shape 

您可以創建一個類來容納兩個項目,以便更好地訪問。 例如,

import numpy as np

class Elem():
    def __init__(self, a, b):
        self.a = a
        self.b = b


def create(lst):
    l = []
    for a, b in lst:
        l.append(Elem(a, b))
    return l

x = ['1','2','3','4','5','6','7','8','9']
y = ['a','b','c','d','e','f','g','h','i']
z = np.array(create(zip(x,y)))

print np.shape(list(z))

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM