numpy 我如何从两个长度不同的向量生成一个向量?

nfs0ujit  于 11个月前  发布在  其他
关注(0)|答案(1)|浏览(100)

我是一个初学Python的程序员,我的问题是:如果我有两个这样的向量,

arr1=np.array(1,2,3,4,5,6)
arr2=np.array(1,1,0,1,1,0,0,0,1,1)

字符串
当arr 2中的元素=0,arr 1中的元素=-9时,使用条件,因此最终向量应为
arr3=(1,2,-9,3,4,-9,-9,-9,5,6).
arr 2是一个只有0和1值的向量,最终向量的长度应该是arr 2。arr 1可以比arr 1有更少的元素

ttisahbt

ttisahbt1#

在创建2个示例数组时,您忘记了[]。测试示例代码是个好主意:

In [86]: arr1=np.array([1,2,3,4,5,6])
    ...: arr2=np.array([1,1,0,1,1,0,0,0,1,1])

字符串
我的insert建议是错误的(未从我的手机测试):

In [87]: np.insert(arr1,[2,4,4,4],-9)
Out[87]: array([ 1,  2, -9,  3,  4, -9, -9, -9,  5,  6])


我应该能够从arr2推导出[2,4,4,4],但采用另一种方法更容易。
定义一个像arr2这样的数组,但是有“fill”值:

In [88]: arr3 = np.zeros_like(arr2); arr3[:]=-9


找到arr3中的插槽,其中arr2是1(不是0)。如果数字匹配arr1的长度,我们可以复制:

In [89]: arr3[arr2==1]
Out[89]: array([-9, -9, -9, -9, -9, -9])
In [90]: arr3[arr2==1]=arr1

In [91]: arr3
Out[91]: array([ 1,  2, -9,  3,  4, -9, -9, -9,  5,  6])


我是一个有经验的numpy程序员,所以这相对容易。但是这里没有numpy文档基础没有涵盖的内容。它只是索引分配。

相关问题