簡體   English   中英

解壓縮NumPy數組

[英]Unzip a NumPy array

我正在嘗試分別打印通過應用兩個拉鏈中的函數獲得的變量的列。 如下請見:

x5 = list(zip(x3,x4))
x6 = np.array(x5)
print(x6)

應用功能:

n = 1 
br = myfunction(x3,x4,n)

print('this is the result ... ',  br)

請注意,如建議的那樣,生成myfunction輸出類型的數據的可重現方法是:

   br = numpy.random.rand((5, 2))

輸出看起來像這樣:

finally result ... [[[5.37692693e+03 3.78425697e- 
 03]
  [1.36092539e+03 3.35722632e-03]
  [5.43477586e+03 3.90104194e-03]
   ...
  [5.93759455e+03 4.05490440e-03]
  [3.00855802e+03 3.65746871e-03]
  [4.69875286e+03 3.93713784e-03]]]

我嘗試了許多方法,例如:首先:

  x10,x11 = zip(*br)
  print(x10,x11) /print(np.array(x10),np.array(x11)) 

未能給出錯誤信息(期望太多的值來解壓兩個)

第二:

def column(matrix,i):
    return [row[i] for row in matrix]

 x10 = column(br,0)
 x11 = column(br,1)

 print(x10,x11)

其輸出為:

 [array([5.37692693e+03, 3.78425697e-03])] 
 [array([1.36092539e+03, 3.35722632e-03])]

第三:

   x11 = [i[0] for i in br]
   x12 = [i[1] for i in br]
   print(x11.split(),x12.split())

我認為這不起作用,因為我的函數的輸出類型為[[[..]]]

非常感謝

您只能解壓縮數組的第一個維,但是要解壓縮的維是第二個維。 這意味着您可以執行以下操作:

x10, x11 = br.T

請注意, x10x11成為br的視圖 這意味着,如果您更改任何這些數組中的任何值,那么您也將更改其他變量。

如果您的數組具有2D以上的尺寸(額外[] ),請使用

br.shape

如果您看到多余的空尺寸( 1 ),請使用

br = br.squeeze()

另一個可能的解決方案是

br = [[[5.37692693e+03, 3.78425697e-03],  [1.36092539e+03, 3.35722632e-03],  [5.43477586e+03, 3.90104194e-03],  [5.93759455e+03, 4.05490440e-03],  [3.00855802e+03, 3.65746871e-03],  [4.69875286e+03, 3.93713784e-03]]]

x10,x11 = zip(*br[0])
print(x10,x11) 

產量

(5376.92693, 1360.92539, 5434.77586, 5937.59455, 3008.55802, 4698.75286) (0.00378425697, 0.00335722632, 0.00390104194, 0.0040549044, 0.00365746871, 0.00393713784)

暫無
暫無

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

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