簡體   English   中英

使用nan值將1d數組轉換為2d數組

[英]convert 1d array to 2d array with nan values

假設我有一個這樣的系列

S1 = Series([[1 , 2 , 3] , [4 , 5 , 6] , np.nan , [0] , [8 ,9 ]])

0    [1, 2, 3]
1    [4, 5, 6]
2          NaN
3          [0]
4       [8, 9]

然后我將根據本系列創建一個numpy數組

arr1d = S1.values # [[1, 2, 3] [4, 5, 6] nan [0] [8, 9]]
print(arr1d.shape) #(5L,)
print(arr1d.ndim) # 1

是否有可能從arr1d創建一個二維數組,如下所示

arr2d = np.array([[1 , 2 , 3 ] , [4 , 5 , 6] , 
[np.nan , np.nan , np.nan] , [0 , np.nan , np.nan] , [8 , 9 , np.nan]])

這就是二維數組的樣子

[[  1.   2.   3.]
 [  4.   5.   6.]
 [ nan  nan  nan]
 [  0.  nan  nan]
 [  8.   9.  nan]]

print(arr2d.ndim) # 2
print(arr2d.shape) # (5L, 3L)

該解決方案應與arr1d任意數量的元素一起動態工作,這只是數據看起來像的一個示例

不要求效率,但這應該起作用:

from itertools import zip_longest

arr2d = np.array(list(zip_longest(*np.atleast_1d(*S1), fillvalue=np.nan))).T


print(arr2d)
print(arr2d.shape)

輸出:

[[  1.   2.   3.]
 [  4.   5.   6.]
 [ nan  nan  nan]
 [  0.  nan  nan]
 [  8.   9.  nan]]
(5, 3)

暫無
暫無

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

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