如何根据Python中的其他元素加快计算数组中每个元素的更新值?

时间:2018-02-25 21:42:51

标签: python numpy

我现在正在进行如下所示的计算。我想根据相邻元素更新每个元素的值。我现在使用两个for循环,但它显示计算非常慢,因为有几个外部迭代。我想知道是否有任何方法可以加快这种计算>

import numpy as np
p = np.ones((5,5))
for i in range(1,4):
    for j in range(1,4):
        p[i,j]=p[i-1,j] + p[i+1,j] +2*p[i,j+1]+2*p[i,j-1]

print(p)

a,b,c,d是一些常数,p是numpy.array类型

示例输入:

[[   1.    1.    1.    1.    1.]
 [   1.    6.   16.   36.    1.]
 [   1.   11.   41.  121.    1.]
 [   1.   16.   76.  276.    1.]
 [   1.    1.    1.    1.    1.]]

最终输出应为:

@Override
protected Response<JSONObject> parseNetworkResponse(NetworkResponse response) {
    try {
        String jsonString = new String(response.data, HttpHeaderParser.parseCharset(response.headers, PROTOCOL_CHARSET));
        JSONObject jsonResponse = new JSONObject(jsonString);

        // set token after receiving from login response
        TokenHandler.setToken(response.headers.get("x-auth"));

        return Response.success(jsonResponse, HttpHeaderParser.parseCacheHeaders(response));
    } catch (UnsupportedEncodingException | JSONException e) {
        return Response.error(new ParseError(e));
    }
}

1 个答案:

答案 0 :(得分:0)

没有足够的回复评论,但这并没有完全回答这个问题,但是如果你使用的是NumPy,你一定要看array broadcasting。很难确切地说出你的代码在做什么,但是使用广播应该可以更容易地更新整个矩阵而不是按值增值