我想转换此列表
li = [3, 2 , 1 , 4]
到以下NumPy ndarray
[[3], [2], [1], [4]]
我尝试使用np.asarray()
,但未将其转换为ndarray
。有没有办法提到轴?
答案 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