考虑以下1D数组
a=np.arange(3)+9
b=np.arange(3)+5
目前我正在使用
初始化新的3d数组n=4
cols=3
k=np.vstack((a,b,a*b,np.zeros((n,cols)),a,b,a,a,b**2,np.zeros((n,cols)),a*2,a)).T.reshape(-1,2,n+5)
其中a和b将始终是相同的形状
导致
array([[[ 9., 5., 45., 0., 0., 0., 0., 9., 5.],
[ 9., 9., 25., 0., 0., 0., 0., 18., 9.]],
[[ 10., 6., 60., 0., 0., 0., 0., 10., 6.],
[ 10., 10., 36., 0., 0., 0., 0., 20., 10.]],
[[ 11., 7., 77., 0., 0., 0., 0., 11., 7.],
[ 11., 11., 49., 0., 0., 0., 0., 22., 11.]]])
如何使用类似的技术(也没有for循环)将零填充更改为以下内容:
array([[[ 9., 5., 45., 9., 5., 0., 0., 0., 0.],
[ 9., 9., 25., 18., 9., 0., 0., 0., 0.]],
[[ 10., 6., 60., 0., 0., 10., 6., 0., 0.],
[ 10., 10., 36., 0., 0., 20., 10., 0., 0.]],
[[ 11., 7., 77., 0., 0., 0., 0., 11., 7.],
[ 11., 11., 49., 0., 0., 0., 0., 22., 11.]]])
答案 0 :(得分:1)
在给定列索引的情况下,可以使用advanced-indexing
将这些数组值分配到零初始化数组中 -
<!DOCTYPE html>
<html>
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.6.4/angular.min.js"></script>
<body ng-app="">
<form name="myForm">
Click here to make the input field required:
<div ng-app="" ng-init="firstName='John'">
<input name="myInput" ng-model="myInput" ng-value="firstName" ng-required="true">
<h1 ng-if="!myForm.myInput.$valid">The input field cannot be empty</h1>
</form>
</body>
</html>
示例运行 -
out = np.zeros((3,2,9),dtype=bool)
vals = np.array([[a,b,a*b,a,b],[a,a,b**2,2*a,a]])
out[np.arange(3)[:,None],:, idx] = vals.T