Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python Numpy追加到数组_Python_Arrays_Numpy - Fatal编程技术网

Python Numpy追加到数组

Python Numpy追加到数组,python,arrays,numpy,Python,Arrays,Numpy,我正在为Raspberry Pi构建一个项目,它可以在特定的时间窗口内随机打开和关闭继电器。为了管理时间段,我想使用每天生成的二维数组。因此,我的Python应用程序需要清空前一天的数组,并用随机生成的开/关时隙填充它。我不知道如何将我的时间值附加到数组中。有人能帮我吗? 这是我的密码: daily_slots = np.empty([1], dtype=[('onTime', np.dtype(int)), ('offTime', np.dtype(int))]) # numpy po

我正在为Raspberry Pi构建一个项目,它可以在特定的时间窗口内随机打开和关闭继电器。为了管理时间段,我想使用每天生成的二维数组。因此,我的Python应用程序需要清空前一天的数组,并用随机生成的开/关时隙填充它。我不知道如何将我的时间值附加到数组中。有人能帮我吗? 这是我的密码:

  daily_slots = np.empty([1], dtype=[('onTime', np.dtype(int)), ('offTime', np.dtype(int))])
  # numpy populates the array with whatever is in memory at that time,
  # so delete the existing, 'empty' array row
  daily_slots = np.delete(daily_slots, 0, 0)
有了它,我如何附加值?numpy文档说我应该做如下操作:

daily_slots = np.append(daily_slots, [700, 800])
但这不管用,我明白了

Traceback (most recent call last):
  File "./controller.py", line 351, in <module>
    init_app()
  File "./controller.py", line 128, in init_app
    build_daily_slots_array()
  File "./controller.py", line 307, in build_daily_slots_array
    daily_slots = np.append(daily_slots, [700, 800])
  File "/usr/lib/python2.7/dist-packages/numpy/lib/function_base.py", line 3555, in append
    return concatenate((arr, values), axis=axis)
TypeError: invalid type promotion
回溯(最近一次呼叫最后一次):
文件“/controller.py”,第351行,在
初始化应用程序()
文件“/controller.py”,第128行,在init_应用程序中
构建\每日\插槽\阵列()
文件“/controller.py”,第307行,内置\u每日\u插槽\u数组
daily\u slots=np.append(daily\u slots,[700800])
文件“/usr/lib/python2.7/dist packages/numpy/lib/function_base.py”,附录中第3555行
返回连接((arr,值),轴=轴)
TypeError:无效的类型升级
我已经尝试了所有我能想到的,我已经戳和戳在numpy文件,我没有找到答案


我是否没有正确声明数组?我希望每个数组“行”由两个元素组成(ontime和offtime)

np.append
使用
np.concatenate
。它不是list append的真实副本。它将新值转换为数组并进行连接但要与结构化数组连接,所有数组必须具有相同的数据类型(或至少具有兼容的数据类型,因此出现“升级”错误)

这项工作:

In [4]: np.append(daily_slots, np.array((700, 800), dtype=daily_slots.dtype))
Out[4]: 
array([(  0, 1075970048), (700,        800)], 
      dtype=[('onTime', '<i4'), ('offTime', '<i4')])
对于增长和收缩,列表通常更好。在这种情况下,列表包含两个元素元组,或者可以是自定义类的列表


如果它是一个元组列表,您可以将其包装在
np.array
中,将其转换为2d数组,以便于计算。

numpy append非常慢,因为numpy保证了连续的内存。请改用python list。您可能只需要一个列表。或者,如果您确实需要一些随机值的numpy数组,请使用
np.random
.Y你几乎从不想要
np.append
。你的方法没有多大意义。你初始化一个
空的
数组,然后删除一行,然后追加一行…这不是你应该使用numpy的方式。这些回答都不能帮我解决问题。建议其他方法不能回答问题,也没有帮助。我很抱歉删除该行,因为numpy出于某种荒谬的原因,在初始化数组时将该行放入其中,并使用伪数据。我找不到任何方法将数组初始化为空,否则我会这样做。我不是在寻找生成随机数据的方法,我在试图找到一种方法来存储我在二维数组中创建的随机数据。这应该是一个我可以得到问题答案的地方。我展示了我要做的事情,我解释了我自己,我展示了我的代码。你能帮我回答我的问题吗?谢谢你回答我的问题,而不是忽视我的问题,简单地告诉我不要做我想做的事。你在帮助我解决问题,并且同时学习一些关于numpy的知识。我真的很难理解为什么这是你最近得到的唯一类型的答案。
In [6]: np.concatenate((daily_slots, np.array([(700, 800)], dtype=daily_slots.dtype)))
Out[6]: 
array([(  0, 1075970048), (700,        800)], 
      dtype=[('onTime', '<i4'), ('offTime', '<i4')])