Получите 1 норму вектора в Python

Вот как я это делаю:

public static String readFromAssets(Context context, String filename) throws IOException {
    BufferedReader reader = new BufferedReader(new InputStreamReader(context.getAssets().open(filename)));

    // do reading, usually loop until end of file reading  
    StringBuilder sb = new StringBuilder();
    String mLine = reader.readLine();
    while (mLine != null) {
        sb.append(mLine); // process line
        mLine = reader.readLine();
    }
    reader.close();
    return sb.toString();
}

использовать его следующим образом:

readFromAssets(context,"test.txt")
17
задан kquinn 20 May 2009 в 08:18
поделиться

4 ответа

Python имеет мощные встроенные типы, но списки Python не являются математическими векторами или матрицами . Вы могли бы сделать это со списками, но это, вероятно, будет обременительно для чего-то, кроме тривиальных операций.

Если вам часто требуется векторная или матричная арифметика, стандарт в этой области - NumPy , который, вероятно, уже поставляется в упаковке для вашей операционной системы, как и Python.

Я разделяю заблуждение других относительно того, что именно вы пытаетесь сделать, но, возможно, numpy Функция .linalg.norm поможет:

>>> import numpy
>>> a = numpy.array([1, 2, 3, 4])
>>> b = numpy.array([2, 3, 4, 5])
>>> numpy.linalg.norm((a - b), ord=1)
4

Чтобы показать, как это работает под прикрытием:

>>> a
array([1, 2, 3, 4])
>>> b
array([2, 3, 4, 5])
>>> (a - b)
array([-1, -1, -1, -1])
>>> numpy.linalg.norm((a - b))
2.0
>>> numpy.linalg.norm((a - b), ord=1)
4
28
ответ дан 30 November 2019 в 10:50
поделиться

In NumPy, for two vectors a and b, this is just

numpy.linalg.norm(a - b, ord=1)
10
ответ дан 30 November 2019 в 10:50
поделиться

Похоже, вы запрашиваете сумму различий между парными компонентами двух массивов:

>>> A=[1,2,3,4]
>>> B=[2,3,4,5]
>>> sum(abs(a - b) for a, b in zip(A, B))
4
7
ответ дан 30 November 2019 в 10:50
поделиться

Неясно, что именно здесь требуется, но вот мое предположение

a=[1,2,3,4]
b=[2,3,4,5]
def a_b(a,b):
    return sum(map(lambda a:abs(a[0]-a[1]), zip(a,b)))

print a_b(a,b)
3
ответ дан 30 November 2019 в 10:50
поделиться
Другие вопросы по тегам:

Похожие вопросы: