Форум сайта python.su
0
Нужно создать массив из того, что получается в переменной типа list - Typ1. Я создаю его вводя новую переменную Mtyp1, вот так(постарался сделать минимальный пример):
import numpy as np Typ1 = [] Typ1.append((1 if ty1 == 1 or ty2 == 1 or ty3 == 1 or ty4 == 1 or ty5 == 1 else 0)) Mtyp1 = np.array(Typ1)
np.array(Typ1.append((1 if ty1 == 1 or ty2 == 1 or ty3 == 1 or ty4 == 1 or ty5 == 1 else 0)))
Офлайн
13
np.array([int(1 in (ty1, ty2, ty3, ty4, ty5))])
Офлайн
0
EdСпасибо за более элегантную запись условия тоже спасибоnp.array([int(1 in (ty1, ty2, ty3, ty4, ty5))])
Но она дает массив n-размерный, а мне нужно одно размерный))) Отредактировано Dimazzzzzz (Июнь 9, 2012 18:56:42)
Офлайн
0
Блин нет, есть проблема все-таки
Ваш код добавляет только последний элемент, т.к. я не знаю как к строчке:
Typ1 = np.array([int(1 in (ty1, ty2, ty3, ty4, ty5))])
>>> Typ1 [0, 1, 1, 1, 0, 1, 0, 0]
Отредактировано Dimazzzzzz (Июнь 9, 2012 19:13:27)
Офлайн
13
Трудно что-либо сказать глядя на то, что вы пишете. Я же не знаю откуда вы берете эти переменные. Код покажите?
Отредактировано Ed (Июнь 9, 2012 19:19:27)
Офлайн
13
Ладно, допустим, что ваши переменные формируются из некоего двумерного списка. Тогда то, что вы хотите будет выглядеть вот так:
lfoo = [(1,2,3,4,5), (3,4,5,0,3) ...]
Typ1 = np.array([int(1 in (ty1, ty2, ty3, ty4, ty5)) for ty1, ty2, ty3, ty4, ty5 in lfoo])
Отредактировано Ed (Июнь 9, 2012 19:26:24)
Офлайн
0
Простите, счас напишу подробнее как получается эта переменная:
Я построчно парсю html код, выцепляю из множества страниц информацию. Страницы чередуются вот так:
for J in xrange(803311460, 803311500): url='http://www.vezetmne.ru/auctions/'+str(J)
if 'Участ' in type1: ty1 = 1 # Не требует свободных лотов (+) elif 'Кажд' in type1: ty1 = 2 # Ограниченное количество ставок (+) elif 'Лог' in type1: ty1 = 3 #'Логины зашифрованы'(+) #и т.д. до 10 # ty2,3,4 задаются абсолютно аналогично
Отредактировано Dimazzzzzz (Июнь 9, 2012 19:34:13)
Офлайн
13
Показывайте весь код. Если у вас там 10 переменных, то что-то в консерватории не так.
Офлайн
0
Ух, весь код ужас как страшно показывать, руки кривые
)) плеваться будете жутко))))
#-*- coding: cp1251 -*- """ """#/usr/bin/python import urllib import numpy as np rasnost = [] Blitz1 = [] Stavka2 = [] Igrok2 = [] Typ1 = [] Typ2 = [] Typ3 = [] Typ4 = [] Typ5 = [] Typ6 = [] Typ7 = [] Typ8 = [] Typ9 = [] Typ10 = [] for J in xrange(803311460, 803311500): url='http://www.vezetmne.ru/auctions/'+str(J) urllib.urlretrieve(url=url, filename='COD.html') infile = open('COD.html') lines = infile.readlines() print J for i in range(len(lines)): line = lines[i]# так короче if 'cbid=alterStep' in line: rasnost.append(np.float(line.strip()[24:28])) if 'item_bigcell' in line: type1 = lines[i+1].strip()[10:40] type2 = lines[i+2].strip()[10:40] type3 = lines[i+3].strip()[10:40] type4 = lines[i+4].strip()[10:40] type5 = lines[i+5].strip()[10:40] if 'Блиц-цена' in line: Origin = line.strip()[91:97] if '.' in Origin: Orig = Origin[0:5] else: Orig = Origin if '.' in Orig: AA = Orig[0:4] else: AA = Orig if '.' in AA: BB = AA[0:3] else: BB = AA if '.' in BB: Blitz1.append(np.int(BB[0:2])) else: Blitz1.append(np.int(BB)) if '<div class="history" id="history">' in line: Stavka1 = lines[i+3].strip()[21:50]# stavka.append(line.strip()[21:30]) Stavka2.append(np.float(Stavka1[0:Stavka1.find('р')])) Igrok1 = lines[i+3].strip()[21:-24] # А вот для ника возьмем с минусом Igrok2.append(Igrok1[Stavka1.find('р')+26:]) if 'Участ' in type1: ty1 = 1 # Не требует свободных лотов (+) elif 'Кажд' in type1: ty1 = 2 # Ограниченное количество ставок (+) elif 'Лог' in type1: ty1 = 3 #'Логины зашифрованы'(+) elif 'Днев' in type1: ty1 = 4 #'Дневной'(+) elif 'Один' in type1: ty1 = 5 #'С блефом' (+) - Внезапно ОО elif 'Аукцион для' in type1: ty1 = 6 #' Для новичков' (+) elif 'Ставк' in type1: ty1 = 7 #'На понижение' elif 'Фикс' in type1: ty1 = 8 #'Фиксированная цена' elif '100' in type1: ty1 = 9 #'100% скидка' elif 'Бесп' in type1: ty1 = 10 #'Бесплатные ставки' else: ty1 = 0 if 'Участ' in type2: ty2 = 1 # Не требует свободных лотов (+) elif 'Кажд' in type2: ty2 = 2 # Ограниченное количество ставок (+) elif 'Лог' in type2: ty2 = 3 #'Логины зашифрованы'(+) elif 'Днев' in type2: ty2 = 4 #'Дневной'(+) elif 'Один' in type2: ty2 = 5 #'С блефом' (+) - Внезапно ОО elif 'Аукцион для' in type2: ty2 = 6 #' Для новичков' (+) elif 'Ставк' in type2: ty2 = 7 #'На понижение' elif 'Фикс' in type2: ty2 = 8 #'Фиксированная цена' elif '100' in type2: ty2 = 9 #'100% скидка' elif 'Бесп' in type2: ty2 = 10 #'Бесплатные ставки' else: ty2 = 0 if 'Участ' in type3: ty3 = 1 # Не требует свободных лотов (+) elif 'Кажд' in type3: ty3 = 2 # Ограниченное количество ставок (+) elif 'Лог' in type3: ty3 = 3 #'Логины зашифрованы'(+) elif 'Днев' in type3: ty3 = 4 #'Дневной'(+) elif 'Один' in type3: ty3 = 5 #'С блефом' (+) - Внезапно ОО elif 'Аукцион для' in type3: ty3 = 6 #' Для новичков' (+) elif 'Ставк' in type3: ty3 = 7 #'На понижение' elif 'Фикс' in type3: ty3 = 8 #'Фиксированная цена' elif '100' in type3: ty3 = 9 #'100% скидка' elif 'Бесп' in type3: ty3 = 10 #'Бесплатные ставки' else: ty3 = 0 if 'Участ' in type4: ty4 = 1 # Не требует свободных лотов (+) elif 'Кажд' in type4: ty4 = 2 # Ограниченное количество ставок (+) elif 'Лог' in type4: ty4 = 3 #'Логины зашифрованы'(+) elif 'Днев' in type4: ty4 = 4 #'Дневной'(+) elif 'Один' in type4: ty4 = 5 #'С блефом' (+) - Внезапно ОО elif 'Аукцион для' in type4: ty4 = 6 #' Для новичков' (+) elif 'Ставк' in type4: ty4 = 7 #'На понижение' elif 'Фикс' in type4: ty4 = 8 #'Фиксированная цена' elif '100' in type4: ty4 = 9 #'100% скидка' elif 'Бесп' in type4: ty4 = 10 #'Бесплатные ставки' else: ty4 = 0 if 'Участ' in type5: ty5 = 1 # Не требует свободных лотов (+) elif 'Кажд' in type5: ty5 = 2 # Ограниченное количество ставок (+) elif 'Лог' in type5: ty5 = 3 #'Логины зашифрованы'(+) elif 'Днев' in type5: ty5 = 4 #'Дневной'(+) elif 'Один' in type5: ty5 = 5 #'С блефом' (+) - Внезапно ОО elif 'Аукцион для' in type5: ty5 = 6 #' Для новичков' (+) elif 'Ставк' in type5: ty5 = 7 #'На понижение' elif 'Фикс' in type5: ty5 = 8 #'Фиксированная цена' elif '100' in type5: ty5 = 9 #'100% скидка' elif 'Бесп' in type5: ty5 = 10 #'Бесплатные ставки' else: ty5 = 0 Typ1.append((1 if ty1 == 1 or ty2 == 1 or ty3 == 1 or ty4 == 1 or ty5 == 1 else 0)) Typ2.append((1 if ty1 == 2 or ty2 == 2 or ty3 == 2 or ty4 == 2 or ty5 == 2 else 0)) Typ3.append((1 if ty1 == 3 or ty2 == 3 or ty3 == 3 or ty4 == 3 or ty5 == 3 else 0)) Typ4.append((1 if ty1 == 4 or ty2 == 4 or ty3 == 4 or ty4 == 4 or ty5 == 4 else 0)) Typ5.append((1 if ty1 == 5 or ty2 == 5 or ty3 == 5 or ty4 == 5 or ty5 == 5 else 0)) Typ6.append((1 if ty1 == 6 or ty2 == 6 or ty3 == 6 or ty4 == 6 or ty5 == 6 else 0)) Typ7.append((1 if ty1 == 7 or ty2 == 7 or ty3 == 7 or ty4 == 7 or ty5 == 7 else 0)) Typ8.append((1 if ty1 == 8 or ty2 == 8 or ty3 == 8 or ty4 == 8 or ty5 == 8 else 0)) Typ9.append((1 if ty1 == 9 or ty2 == 9 or ty3 == 9 or ty4 == 9 or ty5 == 9 else 0)) Typ10.append((1 if ty1 == 10 or ty2 == 10 or ty3 == 10 or ty4 == 10 or ty5 == 10 else 0)) print rasnost, '\n', Blitz1, '\n', Stavka2, '\n', Igrok2 W = np.array(rasnost) Blitz = np.array(Blitz1) Stavka = np.array(Stavka2) Mtyp1 = np.array(Typ1) Mtyp1 = np.array(Typ1) Mtyp2 = np.array(Typ2) Mtyp3 = np.array(Typ3) Mtyp4 = np.array(Typ4) Mtyp5 = np.array(Typ5) Mtyp6 = np.array(Typ6) Mtyp7 = np.array(Typ7) Mtyp8 = np.array(Typ8) Mtyp9 = np.array(Typ9) Mtyp10 = np.array(Typ10)

Я сам засмеялся на него глянув, но как есть (
Отредактировано Dimazzzzzz (Июнь 9, 2012 19:56:58)
Офлайн
13
Ну, код конечно серьезный. Давайте пооптимизируем, может чего получше сделаем. Для начала давайте избавимся от 10 списков Typ1 - Typ10. Вместо этого попользуем один двумерный, вот такой:
Typs = [[]] * 10
Typs[0].append(...
Офлайн