附加1x3 numpy数组

时间:2015-12-10 20:29:35

标签: python arrays numpy

我正在从文件中读取浮点数,而我正在尝试创建一个np数组的np数组。我基本上做了:

arr = []
for i in range:
   arr.append(np.array([float, float, float]))
return np.asarray(arr)

这给了我数组项,例如,[3。 5. 2.],所以它们的形状是(3,),但我希望它们是(1,3)。我该如何解决这个问题?

2 个答案:

答案 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)