I want to convert this list
li = [3, 2 , 1 , 4]
to the following NumPy ndarray
[[3], [2], [1], [4]]
我尝试使用np.asarray()
,但它没有将其转换为ndarray
。有没有办法提及轴?
numpy.expand_dims
来创建带有额外轴的数组。>>> np.expand_dims(li, -1)
array([[3],
[2],
[1],
[4]])
np.array(li)[..., np.newaxis]
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
In [45]: np.asarray(li)[:,None]
Out[45]:
array([[3],
[2],
[1],
[4]])
您可以使用列表推导式来创建嵌套列表,然后使用numpy.array()
将嵌套列表转换为Numpy ndarray。
>>> import numpy as np
>>> li = [3, 2, 1, 4]
>>> np.array([[x] for x in li])
[[3]
[2]
[1]
[4]]
我相信最短的是
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)
np.asarray()
会产生什么,如果它不是ndarray
?我期望它会产生一个一维数组。 - hpaulj