将列表转换为Numpy ndarray

时间:2018-04-12 03:17:51

标签: python numpy

我想转换此列表

li = [3, 2 , 1 , 4]

到以下NumPy ndarray

[[3], [2], [1], [4]]

我尝试使用np.asarray(),但未将其转换为ndarray。有没有办法提到轴?

4 个答案:

答案 0 :(得分:2)

您可以使用numpy.expand_dims创建一个带有额外轴的数组

>>> np.expand_dims(li, -1)
array([[3],
       [2],
       [1],
       [4]])

或者如果您愿意,可以在创建数组后添加轴。

np.array(li)[..., np.newaxis]

答案 1 :(得分:0)

您可以使用List Comprehension创建嵌套列表,然后使用numpy.array()将嵌套列表转换为Numpy ndarray。

>>> import numpy as np
>>> li = [3, 2, 1, 4]

>>> np.array([[x] for x in li])    
[[3]
 [2]
 [1]
 [4]]

答案 2 :(得分:0)

最短的是我相信

np.c_[li]
# array([[3],
#        [2],
#        [1],
#        [4]])

对于一般尺寸和轴:

dummy, ndim, axis = 0, 4, 2
np.r_[f'{dummy},{ndim},{axis}', li]
# array([[[[3],
#          [2],
#          [1],
#          [4]]]])
_.shape
# (1, 1, 4, 1)

另一个例子:

dummy, ndim, axis = 0, 3, 0
np.r_[f'{dummy},{ndim},{axis}', li]
# array([[[3]],
#        [[2]],  
#        [[1]],
#        [[4]]])
_.shape
# (4, 1, 1)

答案 3 :(得分:0)

def fab_querytime(intime): if isinstance(intime,basestring) and len(intime) == 12: # my query time args like 201804061200 _t = arrow.get(intime,'YYYYMMDDHHmm') _t = _t.replace(hours=-8) return fab_querytime(_t) if isinstance(intime,arrow.arrow.Arrow): _str = intime.format('YYYY-MM-DDTHH:mm:ss') + '.000Z' return str(_str) 确实产生asarray

ndarray

要生成额外的嵌套,您需要添加维度(以某种方式或其他方式):

In [41]: li = [3, 2 , 1 , 4]
In [42]: x = np.asarray(li)
In [43]: x
Out[43]: array([3, 2, 1, 4])
In [44]: type(x)
Out[44]: numpy.ndarray

昨天:Transforming a list to a column vector in Python