2016-03-08 53 views
0

我有兩個不同的數組,我想要相互結合,以便新的數組仍舊與每個舊數組相同。如何在Python中壓縮兩個數組並保持原始形狀?

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()函數,我無法弄清楚這種方式。

+0

呃......什麼是np? – Muctadir

回答

0

我想你只需要在壓縮後加入。試試這個列表的理解:

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

這是你的意思嗎?

+0

非常感謝,這正是我的意思! – DaveL

0
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 
+0

感謝您的輸入!不幸的是,這並不適用於我,因爲我只有在將數字保存在新數組中時纔得到數字。 – DaveL

0

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

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)) 
+0

非常感謝,這對我來說也很有用,但是Michael Mulqueen的答案對我來說更容易使用,因爲我只對最終數組(z)感興趣。 – DaveL