我需要切片一个numpy数组,以便获得对应于深绿色区域的数组: array
绿色区域是列和行中多个范围的交集。 我想到了类似的东西:
M[[1:3,5:7],[1:3,5:7]]=np.zeros(4,4)
但是它不起作用。如何有效地做到这一点?
答案 0 :(得分:1)
我认为您只需要分别完成每个深绿色部分,就像这样:
M[1:3, 5:7] = np.zeros((2,2))
然后重复其他深绿色区域。
编辑: 我想我对您想做的事情了解得更多,您想更加动态地做它,所以我认为类似的事情会起作用:
ta = slice(1, 3)
tb = slice(5, 7)
slices=[ta, tb]
slices = [(s1, s2) for s1 in slices for s2 in slices] #Gives all combinations of slices
for s in slices:
M[s] = np.zeros((2,2))
答案 1 :(得分:1)
我在stackoverflow上使用此matlab like array indexing with numpy找到了答案
我添加了一个数组来执行我想要的操作。最终的代码是:
rows = np.hstack((np.arange(1,3), np.arange(5,7)))
cols = np.hstack((np.arange(1,3), np.arange(5,7)))
M[np.ix_(rc,rc)]=np.zeros(4,4)
也许有一种更有效的方式来定义行和列,但这对我有用
答案 2 :(得分:0)
更新实际上是这样的:
<endpoint address="{URL}" binding="basicHttpBinding" bindingConfiguration="{ClassMethodName}" contract="{ServiceReferenc}.{ClassName}" name="{ClassMethodName}">
<headers>
<wsse:Security mustUnderstand="1" xmlns:wsse="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd" xmlns:wsu="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd">
<wsse:UsernameToken wsu:Id="UsernameToken-{UsernameToken}">
<wsse:Username>{Username}</wsse:Username>
<wsse:Password Type="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-username-token-profile-1.0#PasswordText">{Password}</wsse:Password>
<wsse:Nonce EncodingType="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-soap-message-security-1.0#Base64Binary">{EncodingType}</wsse:Nonce>
</wsse:UsernameToken>
</wsse:Security>
</headers>
</endpoint>
我发现的最佳选择:
np.hstack((x[[1,2,5,6], 1:3], x[[1,2,5,6], 5:7]))
但是您仍然需要相互交换线路