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

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

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


当前回答

我研究了很多,因为我需要使用numpy。在我的一个学校项目中,我需要将数组初始化为空…我在Stack Overflow上没有找到任何相关的答案,所以我开始涂鸦。

# Initialize your variable as an empty list first
In [32]: x=[]
# and now cast it as a numpy ndarray
In [33]: x=np.array(x)

结果将是:

In [34]: x
Out[34]: array([], dtype=float64)

因此,可以直接初始化np数组,如下所示:

In [36]: x= np.array([], dtype=np.float64)

我希望这能有所帮助。

其他回答

最简单的方法

输入:

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)

你可以应用它来构建任何类型的数组,比如0:

a = range(5)
a = [i*0 for i in a]
print a 
[0, 0, 0, 0, 0]

也许你正在寻找的是这样的东西:

x=np.array(0)

通过这种方式,您可以创建一个没有任何元素的数组。它类似于:

x=[]

通过这种方式,您可以提前向数组中添加新元素。

如果你完全不知道数组的最终大小,你可以像这样增加数组的大小:

my_arr = numpy.zeros((0,5))
for i in range(3):
    my_arr=numpy.concatenate( ( my_arr, numpy.ones((1,5)) ) )
print(my_arr)

[[ 1.  1.  1.  1.  1.]  [ 1.  1.  1.  1.  1.]  [ 1.  1.  1.  1.  1.]]

注意第一行的0。 numpy。Append是另一个选项。它调用numpy.concatenate。

要在NumPy中创建一个空的多维数组(例如,一个2D数组m*n来存储矩阵),如果你不知道你要追加多少行,也不关心Stephen Simmons提到的计算成本(即在每次追加时重新构建数组),你可以将你想追加的维度压缩为0:X = np。空(形状= [0,n])。

这样你可以使用例如(这里m = 5,我们假设我们在创建空矩阵时不知道,n = 2):

import numpy as np

n = 2
X = np.empty(shape=[0, n])

for i in range(5):
    for j  in range(2):
        X = np.append(X, [[i, j]], axis=0)

print X

这将给你:

[[ 0.  0.]
 [ 0.  1.]
 [ 1.  0.]
 [ 1.  1.]
 [ 2.  0.]
 [ 2.  1.]
 [ 3.  0.]
 [ 3.  1.]
 [ 4.  0.]
 [ 4.  1.]]