我正在从文件中读取浮点数,而我正在尝试创建一个np数组的np数组。我基本上做了:
arr = []
for i in range:
arr.append(np.array([float, float, float]))
return np.asarray(arr)
这给了我数组项,例如,[3。 5. 2.],所以它们的形状是(3,),但我希望它们是(1,3)。我该如何解决这个问题?
答案 0 :(得分:0)
您可以使用重塑,更改每个阵列的形状。
arr = []
for i in range:
arr.append(np.reshape(np.array([float,float,float]),(1,3)))
return np.asarray(arr)
答案 1 :(得分:0)
Out[426]: array([[ 1.2, 34. , 34. ]])
In [427]: _.shape
Out[427]: (1, 3)
但为什么内部数组必须是(1,3)
?
In [428]: arr=[]
In [429]: for i in range(3):
.....: arr.append(np.array([1.,2.,3.]))
.....:
In [430]: arr
Out[430]: [array([ 1., 2., 3.]), array([ 1., 2., 3.]), array([ 1., 2., 3.])]
In [431]: np.array(arr)
Out[431]:
array([[ 1., 2., 3.],
[ 1., 2., 3.],
[ 1., 2., 3.]])
In [432]: _.shape
Out[432]: (3, 3)
我甚至不需要在内循环中应用array
;我可以收集一份清单:
for i in range(3):
arr.append([1.,2.,3.])
np.array(arr)
如果我想将(1,3)
加入,则内部数组只需np.concatenate
。
请注意,定义二维数组的不同基本方法是给它一个列表列表:
In [442]: np.array([[1,2,3],[4,5,6],[7,8,9]])
Out[442]:
array([[1, 2, 3],
[4, 5, 6],
[7, 8, 9]])
我也可以迭代地制作该列表。
如果我制作内部数组(1,3)
,则使用np.asarray
(或np.array
)加入它们会生成(n, 1,3)
数组:
In [444]: for i in range(3):
arr.append(np.reshape(np.array([1.,2,3]),(1,3)))
.....:
In [445]: arr
Out[445]: [array([[ 1., 2., 3.]]), array([[ 1., 2., 3.]]), array([[ 1., 2., 3.]])]
In [446]: np.array(arr)
Out[446]:
array([[[ 1., 2., 3.]],
[[ 1., 2., 3.]],
[[ 1., 2., 3.]]])
In [447]: _.shape
Out[447]: (3, 1, 3)