我想创建一个空数组,并将项附加到它,一次一个。

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

我可以用NumPy数组使用这种列表风格的符号吗?


当前回答

可以使用append函数。行:

>>> from numpy import *
>>> a = array([10,20,30])
>>> append(a, [[1,2,3]], axis=0)
array([[10, 20, 30],      
       [1, 2, 3]])

列:

>>> append(a, [[15],[15]], axis=1)
array([[10, 20, 30, 15],      
       [1, 2, 3, 15]])

编辑 当然,正如在其他答案中提到的,除非你在矩阵/数组上做一些处理(例如反转),每次你添加一些东西到它,我只会创建一个列表,添加到它,然后将它转换为数组。

其他回答

根据你使用它的目的,你可能需要指定数据类型(参见'dtype')。

例如,要创建一个8位值的2D数组(适合用作单色图像):

myarray = numpy.empty(shape=(H,W),dtype='u1')

对于RGB图像,包括形状中的颜色通道数:shape=(H,W,3)

您还可以考虑使用numpy进行零初始化。0代替numpy.empty。请看这里的说明。

我认为你可以像这样创建空numpy数组:

>>> import numpy as np
>>> empty_array= np.zeros(0)
>>> empty_array
array([], dtype=float64)
>>> empty_array.shape
(0,)

当您想在循环中追加numpy数组时,这种格式非常有用。

最简单的方法

输入:

import numpy as np
data = np.zeros((0, 0), dtype=float)   # (rows,cols)
data.shape

输出: (0,0)

输入:

for i in range(n_files):
     data = np.append(data, new_data, axis = 0)

下面是一些使numpys看起来更像list的方法

np_arr = np.array([])
np_arr = np.append(np_arr , 2)
np_arr = np.append(np_arr , 24)
print(np_arr)

输出:array([2.], 24。)

我认为你想用列表处理大部分工作,然后将结果作为矩阵使用。也许这是一种方法;

ur_list = []
for col in columns:
    ur_list.append(list(col))

mat = np.matrix(ur_list)