是否可以转换一维数组
a = np.array([1,2,3])
到二维数组,相当于
b = np.array([[1],[2],[3]])
b
是连续的吗?答案 0 :(得分:2)
您可以使用np.newaxis
和T
transpose方法执行此操作。
import numpy as np
a = np.array([1,2,3])
a = a[np.newaxis].T
print(a)
# [[1]
# [2]
# [3]]
答案 1 :(得分:1)
重塑数组不会复制数据(如果可能*)并保留C连续性(通常):
>>> a = np.array([1,2,3])
>>> b = a.reshape(3, 1)
>>> b
array([[1],
[2],
[3]])
>>> b.flags
C_CONTIGUOUS : True
F_CONTIGUOUS : False
OWNDATA : False
WRITEABLE : True
ALIGNED : True
UPDATEIFCOPY : False
*编辑:重塑通常会创建一个数组视图,但这不是总是可能(docs)。有一些方法可以检查数据是否未被复制,a
和b
共享相同的基础数据。例如,请参阅here和here。
在上述情况下,尝试几项测试表明reshape
创建了a
的视图(未复制数据):
>>> a.data == b.data
True
>>> np.may_share_memory(a, b) # function from linked answer above
True