Проблемы с матрицей Python - PullRequest
0 голосов
/ 30 апреля 2011

Это продолжение этой темы: Матрица Python, любое решение?


Input

from numpy import *
import numpy

x=[['1','7'],
 ['1.5', '8'],
 ['2', '5.5'],
 ['2','9']]

код

y = x[:, :, None] * x[:, None]
print y.sum(axis=0)

Я получил ошибку:

"индексы списка должны быть целыми числами, а не кортеж "

Но если х x = numpy.array([[1, 7], [1.5, 8], [2, 5.5], [2, 9]]) тогда все нормально, но у меня нет такого ввода .

Ответы [ 3 ]

2 голосов
/ 30 апреля 2011

Редактировать:

Мне не на 100% ясно, что вы просите / пытаетесь достичь здесь.В ответ на комментарий о наличии [['1', '7'] ...]: в настоящее время в вашем списке есть строковые элементы;Вы можете легко конвертировать в числовые элементы с помощью:

xf = [[float(el) for el in m] for m in x]

Исходное сообщение: определите свой список, поставив запятые между элементами списка:

x=[['1','7'],['1.5', '8'],['2', '5.5'],['2','9']]

Когда я этого не делал,Я получил вашу ошибку, но, сделав это, я избежал ошибки.

2 голосов
/ 30 апреля 2011

Вы пропустили запятые между внутренними списками:

x = [['1',   '7'],
     ['1.5', '8'],
     ['2',   '5.5'],
     ['2',   '9']]

Сообщение об ошибке возникло из-за того, что Python видит ['1','7']['1.5','8'] и пытается использовать кортеж ('1.5','8') в качестве индекса в списке ['1','7'].

1 голос
/ 30 апреля 2011

Преобразовать x в массив чисел:

x = numpy.asanyarray([[float(z) for z in y] for y in x])
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...