使用numpy数组,假设我有一个示例数组x
[[ 10. 1. 1. 3. 0. 0.]
[ 11. 1. 1. 3. 0. 0.]
[ 13. 8. 3. 13. 0. 0.]
[ 22. 4. 0. 23. 0. 0.]
[ 32. 6. 0. 8. 0. 0.]
[ 43. 9. 6. 3. 0. 0.]]
我有一个矢量,比方说,y
[34. 56.]
如何使用for循环(或更快的东西?)将行添加到x后用零填充,例如
[[ 10. 1. 1. 3. 0. 0.]
[ 11. 1. 1. 3. 0. 0.]
[ 13. 8. 3. 13. 0. 0.]
[ 22. 4. 0. 23. 0. 0.]
[ 32. 6. 0. 8. 0. 0.]
[ 43. 9. 6. 3. 0. 0.]
[ 34. 0. 0. 0. 0. 0.]
[ 56. 0. 0. 0. 0. 0.]]
(将第一个coln有效地排序,但在这里并不重要,这将是另一个好处)
谢谢你的帮助
答案 0 :(得分:0)
我首先要创建要添加到数据库底部的数组:
import numpy as np
D = np.array([[ 10., 1., 1., 3., 0., 0.],
[ 11., 1., 1., 3., 0., 0.],
[ 13., 8., 3., 13., 0., 0.],
[ 22., 4., 0., 23., 0., 0.],
[ 32., 6., 0., 8., 0., 0.],
[ 43., 9., 6., 3., 0., 0.]])
A = np.array([34., 56.])
Bottom = np.zeros( (A.shape[0], D.shape[1]) )
Bottom[:,0] = A
现在将该部分连接到旧数组
D = concatenate( [D, Bottom] )
另外还有调整大小功能
D = np.resize( D, ( D.shape[0]+len(A), D.shape[1] ) )
但是现在你需要确保新添加的行为零
D[-len(A):]
D[-len(A):,0] = A
甚至可能整个数组都被复制到一个新的位置,但在某些情况下你可能会很幸运,并且在原始数组之后内存中有足够的空间。
表现明智我不知道什么是更好的。但是通常添加到numpy数组并不是一个好主意。也许您认为在开始时创建一个更大的数组并使用切片D [:index_you_need]来显示您在实际时间实际想要的行。然后你可以将新行添加到那个大数组并更新切片。
如果您需要添加许多行,也许您应该使用python列表,它们更灵活。如果你计划进行大量的数字运算,那么numpy数组是你的选择,因为这就是它们的用途; - )。