我不知道如何像通常使用列表那样使用数组或矩阵.我想创建一个空数组(或矩阵),然后一次向其中添加一列(或一行).

目前我能找到的唯一办法就是:

mat = None
for col in columns:
    if mat is None:
        mat = col
    else:
        mat = hstack((mat, col))

如果这是一份 list ,我会这样做:

list = []
for item in data:
    list.append(item)

有没有办法对NumPy个数组或矩阵使用这种表示法?

推荐答案

你在有效使用NumPy方面有错误的思维模式.NumPy数组存储在连续的内存块中.如果要向现有数组中添加行或列,则需要将整个数组复制到新的内存块中,从而为要存储的新元素创建间隙.如果重复构建数组,这是非常低效的.

在添加行的情况下,最好创建一个与数据集最终大小相同的数组,然后逐行为其分配数据:

>>> import numpy
>>> a = numpy.zeros(shape=(5,2))
>>> a
array([[ 0.,  0.],
   [ 0.,  0.],
   [ 0.,  0.],
   [ 0.,  0.],
   [ 0.,  0.]])
>>> a[0] = [1,2]
>>> a[1] = [2,3]
>>> a
array([[ 1.,  2.],
   [ 2.,  3.],
   [ 0.,  0.],
   [ 0.,  0.],
   [ 0.,  0.]])

Python相关问答推荐

如何修复使用turtle和tkinter制作的绘画应用程序的撤销功能

如何让我的Tkinter应用程序适合整个窗口,无论大小如何?

如何通过多2多字段过滤查询集

我在使用fill_between()将最大和最小带应用到我的图表中时遇到问题

为什么带有dropna=False的groupby会阻止后续的MultiIndex.dropna()工作?

使可滚动框架在tkinter环境中看起来自然

如何将一个动态分配的C数组转换为Numpy数组,并在C扩展模块中返回给Python

组/群集按字符串中的子字符串或子字符串中的字符串轮询数据框

当点击tkinter菜单而不是菜单选项时,如何执行命令?

什么是最好的方法来切割一个相框到一个面具的第一个实例?

调用decorator返回原始函数的输出

将pandas导出到CSV数据,但在此之前,将日期按最小到最大排序

如何指定列数据类型

为什么np. exp(1000)给出溢出警告,而np. exp(—100000)没有给出下溢警告?

matplotlib图中的复杂箭头形状

将标签移动到matplotlib饼图中楔形块的开始处

搜索按钮不工作,Python tkinter

将链中的矩阵乘法应用于多组值

如何写一个polars birame到DuckDB

为什么我只用exec()函数运行了一次文件,而Python却运行了两次?