0

我有一个在每次迭代中生成一维 numpy 数组的代码。我希望将数组附加到 CSV 文件的末尾,以便我可以从 Excel 中读取所有数据。我目前正在尝试以下方法:

for loop in range(0,10):
    # The following part generates the array 
    Array1 = numpy.array([4.3])  
    Array2 = numpy.array([10.2])
    Array3 = numpy.concatenate((Array1,Array2),axis=0)

    # The following part tries to generate a CSV writable array. But it fails :S
    if (loop == 0):
        ArrayMain = Array3
    else:
        # Trying to append the new array with the previous array
        ArrayMain = numpy.asarray(ArrayMain,Array3)  

# Trying to write the array into a .txt. file in .csv format
numpy.savetxt("ArrayMain.csv", ArrayMain, delimiter=",",fmt='%.3f')

此代码给出错误。知道如何纠正它吗?

4

3 回答 3

2

我认为您需要使用 append 函数将新数组附加到先前的数组中, asarray 函数将输入转换为数组。

    else:
        # Trying to append the new array with the previous array
        ArrayMain = numpy.append(ArrayMain,Array3)  
于 2012-08-21T16:45:51.713 回答
1

你真的应该记住,ndarrays它并不是真的被设计成这样附加的。

如果您在循环之外立即编写 CSV 文件,则应考虑改用数组列表。

base = []
for i in range(10):
    base.append(...)
np.savetxt("ArrayMain.csv", base, ...)

如果您附加的数组base具有相同的大小(np.savext将数组列表转换为数组本身),这将起作用。

或者,您可以先打开要写入的文件,然后np.savetxt在每次迭代时使用其句柄更新它。在这种情况下,不要忘记在最后关闭它......

于 2012-08-21T17:44:35.167 回答
0

莫斯塔法是对的。numpy.asarray 不附加列表

numpy.asarray([1,2]) -> array([1,2])

即它实际上所做的是将列表转换为数组。您可以使用他定义的 append 函数。或者我个人的最爱

numpy.r_

用法:

numpy.r_[array([1,2]), array([3,4])] -> array([1,2,3,4])

also:

numpy.r_[array([1,2]), 3, [4,5], 6, array([7,8])] -> array([1, 2, 3, 4, 5, 6, 7, 8])

如您所见,它可用于一次性连接各种列表、数组和单个元素。

于 2012-08-21T16:57:23.033 回答