我有一个numpy.ndarray,想要删除第一个h元素并持续t。
如我所见,更通用的方法是选择:
function doSth(fn) {
var counter = 0;
return function(){
counter ++;
if (counter >= 100) { // once per second
counter = 0;
fn();
}
}
}
,中间是[1,2,3,4]。这是正确的,但是当我不想删除任何东西时,我使用h = 0和t = 0,因为我试图删除任何东西,但这会返回空数组。我知道这是因为t = 0而且我也知道这个边界情况的if条件会用my_array [h:]解决它但我不想要这个解决方案(我的问题有点复杂,有更多的维度,代码会变得丑陋)
有什么想法吗?
答案 0 :(得分:1)
相反,请使用
middle = my_array[h:len(my_array)-t]
为了完整性,这是试运行:
my_array = [0,1,2,3,4,5]
h,t = 0,0
middle = my_array[h:len(my_array)-t]
print(middle)
Output: [0, 1, 2, 3, 4, 5]
此示例仅适用于标准数组。由于你的最终目标是使用numpy多维数组,这个问题实际上有点棘手。当您说要删除第一个h
元素和最后t
元素时,我们是否保证h
和t
符合正确的可分性标准,以便结果将是一个结构良好的阵列?
我实际上认为最干净的解决方案只是使用这个解决方案,但首先要用适当的因素来划分。例如,在两个方面:
h = 3
t = 6
a = numpy.array([[ 1, 2, 3],
[ 4, 5, 6],
[ 7, 8, 9],
[10, 11, 12]])
d = numpy.prod(numpy.shape(a)[1:])
mid_a = a[int(h/3):int(len(a)-t/3)]
print(mid_a)
Output: array([[4, 5, 6]])
我在索引中包含了int强制转换,因为即使分子均分分母,python 3也会自动将除法提升为float。
答案 1 :(得分:1)
$curl = curl_init();
curl_setopt_array($curl, array(
CURLOPT_URL => "http://test.dnb.avantimedns.se/drombolig/webservices/autoprospectservice.asmx?op=SaveAutoprospect",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => '{\n \"autoprospect\": \"{\\"SendAdditionalProspects\\":false,\\"RequestsEconomicalAdvice\\":false,\\"RequestsAssessment\\":false,\\"UserEmailsuccess\\":true,\\"ApprovesContact\\":true,\\"ObjectId\\":\\"90160211\\",\\"Source\\":\\"Company\\",\\"Name\\":\\"Test Testsson\\",\\"Email\\":\\"test@test.com\\",\\"ZipCode\\":\\"12345\\",\\"Phone\\":\\"1234567890\\",\\"Message\\":\\"Test\\"}\",\n \"apikey\": \"de2de92-5d8c-4dcc-8573-9354b96ba683\"\n \n}',
CURLOPT_HTTPHEADER => array("content-type: application/json"),
));
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}
可以替换为i:j
个对象。和slice
与':j'
等等:
slice(None,j)
这适用于列表和数组。对于多维数组,使用索引元组,可以包括切片对象
In [55]: alist = [0,1,2,3,4,5]
In [56]: h,t=1,-1; alist[slice(h,t)]
Out[56]: [1, 2, 3, 4]
In [57]: h,t=None,-1; alist[slice(h,t)]
Out[57]: [0, 1, 2, 3, 4]
In [58]: h,t=None,None; alist[slice(h,t)]
Out[58]: [0, 1, 2, 3, 4, 5]