如何将NumPy数组附加到NumPy数组中
问题描述:
我试图填充NumPy数组的NumPy数组。每次我完成循环的迭代时,我都会创建要添加的数组。然后我想将该数组追加到另一个数组的末尾。例如:如何将NumPy数组附加到NumPy数组中
first iteration
np.append([], [1, 2]) => [[1, 2]]
next iteration
np.append([[1, 2]], [3, 4]) => [[1, 2], [3, 4]]
next iteration
np.append([[1, 2], [3, 4]], [5, 6]) => [[1, 2], [3, 4], [5, 6]]
etc.
我使用np.append尝试,但这将返回一个一个维阵列,即
[1, 2, 3, 4, 5, 6]
答
声明:附加阵列应该是例外,因为它是低效率的。
也就是说,你可以通过指定轴
a = np.empty((0, 2))
a = np.append(a, [[3,6]], axis=0)
a = np.append(a, [[1,4]], axis=0)
答
巢阵列,使他们有一个以上的轴实现你的目标,然后使用append
时指定轴。
import numpy as np
a = np.array([[1, 2]]) # note the braces
b = np.array([[3, 4]])
c = np.array([[5, 6]])
d = np.append(a, b, axis=0)
print(d)
# [[1 2]
# [3 4]]
e = np.append(d, c, axis=0)
print(e)
# [[1 2]
# [3 4]
# [5 6]]
或者,如果你坚持使用列表,使用numpy.vstack:
import numpy as np
a = [1, 2]
b = [3, 4]
c = [5, 6]
d = np.vstack([a, b])
print(d)
# [[1 2]
# [3 4]]
e = np.vstack([d, c])
print(e)
# [[1 2]
# [3 4]
# [5 6]]
查找'np.vstack'虽然我建议提高效率创造了2D Python列表先用'append'为你做什么,如果可以的话,只在最后调用'np.array'。 – Julien
使用numpy.append可能并不简单。根据https://docs.scipy.org/doc/numpy/reference/generated/numpy.append.html如果使用axis,被附加的数组必须与其被附加到的数组具有相同的维数。如果您不使用轴,则所使用的值将被平铺。 – opensam
@Julien我不敢相信我没有想到这一点。除了效率之外,它看起来更直截了当,因为在计算完整的二维数组之前,我实际上并没有对数据进行任何处理,只要它是NumPy格式。谢谢。 – UBears