【发布时间】:2021-06-21 08:51:58
【问题描述】:
我有一个 numpy 数组列表,想修改一些数组。这是我的简化清单:
first_list=[np.array([[1.,2.,0.], [2.,1.,0.], [6.,8.,3.], [8.,9.,7.]]),
np.array([[1.,0.,2.], [0.,0.,2.], [5.,5.,1.], [0.,6.,2.]])]
我有一个因子来定义我在每个数组中有多少拆分:
spl_array=2.
这意味着列表的每个数组都可以分成2个。我想将一个固定值 (3.) 添加到每个数组的每个拆分的最后一列,并复制最后一个拆分并从该复制拆分的第三列中减去该值 (3.)。最后我想要如下:
final_list=[np.array([[1.,2.,3.], [2.,1.,3.], [6.,8.,6.], [8.,9.,10.], \
[6.,8.,0.], [8.,9.,4.]]), # copied and subtracted
np.array([[1.,0.,5.], [0.,0.,5.], [5.,5.,4.], [0.,6.,5.], \
[5.,5.,-2.], [0.,6.,-1.]])] # copied and subtracted
我尝试了一些 for 循环,但我完全输了。在此之前,我非常感谢任何帮助。
final_list=[]
for i in first_list:
each_lay=np.split (i, spl_array)
for j in range (len(each_lay)):
final_list.append([each_lay[j][:,0], each_lay[j][:,1], each_lay[j][:,2]+3])
【问题讨论】:
-
我不明白你如何获得0、0、-2、-1。你能解释一下吗?我以为是 0、4、-2、-1
-
亲爱的@Corralien,这部分是我的错。首先
0应该是4.让我们解释一下。第一个数组的最后一个拆分的最后一列的值是3.和7.,我复制了这个拆分并将最后一列减去3.,所以,复制拆分的最后一列将是0和4.。对于第二个数组,最后一个拆分的最后一列是1.和2.,所以如果我从中减去3.,它将是-2.和-1.。 -
列表中的所有数组都一样吗?
-
亲爱的@yan ziselman,是的,所有数组都具有相同的长度。非常感谢您的帮助。
-
有没有理由不将所有数组堆叠在一个数组中?