我是一个初学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有更少的元素
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建议是错误的(未从我的手机测试):
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”值:
arr2
[2,4,4,4]
In [88]: arr3 = np.zeros_like(arr2); arr3[:]=-9
型找到arr3中的插槽,其中arr2是1(不是0)。如果数字匹配arr1的长度,我们可以复制:
arr3
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文档基础没有涵盖的内容。它只是索引分配。
1条答案
按热度按时间ttisahbt1#
在创建2个示例数组时,您忘记了[]。测试示例代码是个好主意:
字符串
我的
insert
建议是错误的(未从我的手机测试):型
我应该能够从
arr2
推导出[2,4,4,4]
,但采用另一种方法更容易。定义一个像
arr2
这样的数组,但是有“fill”值:型
找到
arr3
中的插槽,其中arr2
是1(不是0)。如果数字匹配arr1
的长度,我们可以复制:型
我是一个有经验的numpy程序员,所以这相对容易。但是这里没有numpy文档基础没有涵盖的内容。它只是索引分配。