Вот способ, который вы можете использовать в своем коде для преобразования строки url и карты параметров в действительную кодированную строку url, содержащую параметры запроса.
String addQueryStringToUrlString(String url, final Map<Object, Object> parameters) throws UnsupportedEncodingException {
if (parameters == null) {
return url;
}
for (Map.Entry<Object, Object> parameter : parameters.entrySet()) {
final String encodedKey = URLEncoder.encode(parameter.getKey().toString(), "UTF-8");
final String encodedValue = URLEncoder.encode(parameter.getValue().toString(), "UTF-8");
if (!url.contains("?")) {
url += "?" + encodedKey + "=" + encodedValue;
} else {
url += "&" + encodedKey + "=" + encodedValue;
}
}
return url;
}
Подход №1: Использование broadcasting
-
def broadcasting_app(a, L, S ): # Window len = L, Stride len/stepsize = S
nrows = ((a.size-L)//S)+1
return a[S*np.arange(nrows)[:,None] + np.arange(L)]
Подход №2: Использование более эффективного NumPy strides
-
def strided_app(a, L, S ): # Window len = L, Stride len/stepsize = S
nrows = ((a.size-L)//S)+1
n = a.strides[0]
return np.lib.stride_tricks.as_strided(a, shape=(nrows,L), strides=(S*n,n))
Пример прогона -
In [143]: a
Out[143]: array([ 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11])
In [144]: broadcasting_app(a, L = 5, S = 3)
Out[144]:
array([[ 1, 2, 3, 4, 5],
[ 4, 5, 6, 7, 8],
[ 7, 8, 9, 10, 11]])
In [145]: strided_app(a, L = 5, S = 3)
Out[145]:
array([[ 1, 2, 3, 4, 5],
[ 4, 5, 6, 7, 8],
[ 7, 8, 9, 10, 11]])
Z
?Z = strided_app(X, 8, 4)
даст желаемыйZ
? Ожидаете ли выZ
как 3D-массив? – Divakar 19 January 2017 в 17:42strided_app(np.array([np.arange(6)]),3,1)
? Я использую python 3.6 и numpy 1.13.1 в Anaconda. – Ziofil 12 September 2017 в 05:11strided_app
принимает 1D-массив.np.array([np.arange(6)])
- это 2D-массив. Не знаете, зачем вам нужно обернуть его с помощьюnp.array()
, посколькуnp.arange(6)
уже является массивом. Что именно вы пытаетесь сделать сnp.array()
? – Divakar 12 September 2017 в 05:14as_strided
, но обнаружил, что это вызвало очень серьезную утечку памяти. Это не проблема для небольших массивов, но даже с использованием 64 ГБ ОЗУ на сервере, мои программы на python повысили память MemoryError. Очень рекомендую использовать методbroadcasting_app
. – pacificgilly1992 9 December 2017 в 09:27