【问题标题】:finding the length of a numpy array查找 numpy 数组的长度
【发布时间】:2017-11-01 05:39:16
【问题描述】:

我正在尝试查找 numpy 数组的长度。但是当我使用 len() 函数时,它会给出一个错误,比如“TypeError: len() of unsized object” 当我使用“.size”方法时,我得到的值也是“1”。

我的代码如下

for dt in daterange(start_dt, end_dt): dateComplete=np.array((dt.strftime("%Y-%m-%d"))) print(dateComplete) x=len(dateComplete) print(x)

我正在尝试创建一个包含 1 月 1 日到今天之间的所有日期的数组。

【问题讨论】:

  • 你的数组dateComplete是一个“标量数组”;它的形状为()。此类数组的作用类似于标量,而不是序列,因此没有为它们定义 len。 numpy 数组的len(a) 实际上是a.shape[0]
  • dateComplete 是像array('2017-10-31', dtype='<U10') 这样的单元素数组。它的元素是一个字符串。

标签: python numpy


【解决方案1】:

您究竟想用循环实现什么?如果您想要一个日期数组并检查其长度,则无需遍历它。我不知道 daterange 返回什么类型的对象,但如果它是一个 numpy 数组(如 pandas.date_range(),您可以使用 .astype() 方法获得所需的数组:

dates = date_range(start_dt, end_dt).astype(str)
len(dates)

如果是 Python 列表,可以使用列表推导:

dates = [str(date) for date in date_range(start_dt, end_dt)]
len(dates)

【讨论】:

    【解决方案2】:

    你也可以使用dateComplete.shape,它会返回一个包含数组维度的元组。见:https://docs.scipy.org/doc/numpy-1.13.0/reference/generated/numpy.ndarray.shape.html

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2010-11-07
      • 1970-01-01
      • 1970-01-01
      • 2020-03-22
      • 2023-03-27
      • 2012-05-29
      • 1970-01-01
      • 2017-12-18
      相关资源
      最近更新 更多