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

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

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


当前回答

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

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

mat = np.matrix(ur_list)

其他回答

另一个创建空数组的简单方法是:

import numpy as np
np.empty((2,3), dtype=object)

NumPy数组是一种与列表非常不同的数据结构,被设计成以不同的方式使用。你对hstack的使用可能非常低效…每次调用它时,现有数组中的所有数据都会复制到一个新数组中。(附加函数也会有同样的问题。)如果你想一次一列地构建你的矩阵,你最好将它保存在一个列表中,直到它完成,然后才将它转换成一个数组。

e.g.


mylist = []
for item in data:
    mylist.append(item)
mat = numpy.array(mylist)

Item可以是列表、数组或任何可迭代对象 因为每一项都有相同数量的元素。 在这种特殊情况下(data是一个包含矩阵列的可迭代对象),您可以简单地使用


mat = numpy.array(data)

(还要注意,使用list作为变量名可能不是一个好的实践,因为它用该名称掩盖了内置类型,这可能会导致错误。)

编辑:

如果出于某种原因,您确实想要创建一个空数组,您可以使用numpy.array([]),但这很少有用!

最简单的方法

输入:

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)