Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/346.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 将一维数组转换为具有nan值的二维数组_Python_Numpy_Series - Fatal编程技术网

Python 将一维数组转换为具有nan值的二维数组

Python 将一维数组转换为具有nan值的二维数组,python,numpy,series,Python,Numpy,Series,假设我有一个这样的系列 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.shap

假设我有一个这样的系列

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]])
这就是2d阵列的外观

[[  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)

不要求效率,但这应该有效:

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)