numpy一维数组,如果列表的长度不同

时间:2018-08-04 06:43:44

标签: numpy

首先,我真的很抱歉,如果我发布一个非常愚蠢的问题。我是Numpy的新手。

问题:

场景1:

import numpy as np
data=[1,2,3,4]
type(data)
array=np.array(data)
array
array.ndim
array.shape

输出:

array
Out[63]: array([1, 2, 3, 4])

array.ndim
Out[64]: 1

array.shape
Out[65]: (4,)
  
    

我的问题是(4,)是什么意思。这是否意味着它具有4个元素的单行。我们可以说它是具有一行四列的行向量。     如果是,那么在第二种情况下会造成混乱

  

方案2:

data1 =[[1,2,3,4],[5,6,7]]
array1 =np.array(data)
array1 =array1=np.array(data1) 
array1
array1.ndim
array1.shape

输出:

array1
Out[67]: array([[1, 2, 3, 4], [5, 6, 7]], dtype=object)
array1.ndim
Out[68]: 1
array1.shape
Out[69]: (2,)

这里我的问题是array1的答案.shape应该是(7,),因为维度是1。 我想在这里知道,这是多少行和多少列。也是为什么输出为(2,)

1 个答案:

答案 0 :(得分:0)

data是数字列表:

In [166]: data = [1,2,3,4]

arr是由该列表构成的一维数组-具有4个元素

In [167]: arr = np.array(data)
In [168]: arr
Out[168]: array([1, 2, 3, 4])
In [169]: arr.ndim
Out[169]: 1
In [170]: arr.shape
Out[170]: (4,)

请注意,arr的显示与原始列表的显示[]相同。

在谈论一维数组时,请勿尝试使用rowcolumn的想法。您不是从列表列表开始的,并且数组没有行。是一天。

(4,)是单个元素元组的Python表示法。


data1是列表的列表(长度不一):

In [172]: data1 =[[1,2,3,4],[5,6,7]]
In [173]: data1
Out[173]: [[1, 2, 3, 4], [5, 6, 7]]

arr1是一个包含2个列表的1d数组。请注意object dtype:

In [174]: arr1 = np.array(data1)
In [175]: arr1
Out[175]: array([list([1, 2, 3, 4]), list([5, 6, 7])], dtype=object)

要获得由7个数字组成的一维数组,我们必须串联子列表:

In [176]: np.hstack(data1)
Out[176]: array([1, 2, 3, 4, 5, 6, 7])

该操作类似于列表联接:

In [177]: data1[0] + data1[1]
Out[177]: [1, 2, 3, 4, 5, 6, 7]

如果子列表的长度相等,那么我们可以制作一个二维数组-2行4列,形状为(2,4):

In [178]: data2 =[[1,2,3,4],[5,6,7,8]]
In [179]: np.array(data2)
Out[179]: 
array([[1, 2, 3, 4],
       [5, 6, 7, 8]])