Уведомления

Группа в Telegram: @pythonsu

#1 Май 25, 2016 07:56:09

Oleg256
Зарегистрирован: 2013-08-10
Сообщения: 5
Репутация: +  0  -
Профиль   Отправить e-mail  

Цикл в двумерном массиве

Подскажите пожалуйста решение. Поиск не помог к сожалению. Недавно начал изучать python, еще совсем чайник можно сказать. Для решения моей задачи требуется промежуточная операция. Надо создать 2 списка из двумерного массива: в одном все вторые (по индексу) элементы списка массивов, в другом третьи (по индексу) элементы. У меня решение длинное, но можно сделать как-то при помощи цикла, потому что в задаче у меня массив двумерный в несколько сотен строчек. Вот пример:

a = [[1,2,3,4,5,6],
     [2,3,4,5,6,7],
     [3,4,5,6,7,8],
     [4,5,6,7,8,9]] # Двумерный массив
b = [] # Создаем список
b0=(a[0][2]); b1=(a[1][2]); b2=(a[2][2])
b.append(b0),b.append(b1),b.append(b2) # Заносим в список каждый элемент с индексом 2 из a
c = [] # Создаем список
c0=(a[0][3]); c1=(a[1][3]); c2=(a[2][3])
c.append(c0),c.append(c1),c.append(c2) # Заносим в список каждый элемент с индексом 2 из a
Знаю, что при помощи цикла это можно сделать гораздо проще, но не знаю как.

Офлайн

#2 Май 25, 2016 08:08:41

vic57
Зарегистрирован: 2015-07-07
Сообщения: 913
Репутация: +  127  -
Профиль  

Цикл в двумерном массиве

>>> import numpy as np
>>> a = np.array([[1,2,3],[4,5,6],[7,8,9]])
>>> a
array([[1, 2, 3],
       [4, 5, 6],
       [7, 8, 9]])
>>> a[:,0]
array([1, 4, 7])
>>> a[:,1]
array([2, 5, 8])
>>> list(a[:,0])
[1, 4, 7]
>>> 

Отредактировано vic57 (Май 25, 2016 08:32:49)

Офлайн

#3 Май 25, 2016 10:26:02

Oleg256
Зарегистрирован: 2013-08-10
Сообщения: 5
Репутация: +  0  -
Профиль   Отправить e-mail  

Цикл в двумерном массиве

Спасибо. Но теперь появились новые вопросы.
Как получить индекс максимального, минимального числа из массива?
Как сделать чтобы данные в массиве из строк преобразовать в целые числа и чтобы они были через запятую.
Дело в том, что у меня в массив загружаются данные из файла name.txt (или name.csv) и они идут вот так в массиве уже:

['401' '0' '12' '18']
['402' '1' '21' '8']
А мне нужны там целые числа и через запятую. Если сможете подскажите пожалуйста. Я постараюсь тоже найти ответ, библиотеку numpy я подключил, теперь надо читать документацию, потому что там свои функции и методы.

Офлайн

#4 Май 25, 2016 11:18:25

marvellik
Зарегистрирован: 2016-05-15
Сообщения: 639
Репутация: +  73  -
Профиль   Отправить e-mail  

Цикл в двумерном массиве

по перврму вопросу

a = [[1,2,3,4,5,6],[2,3,4,5,6,7],[3,4,5,6,7,8],[4,5,6,7,8,9]]
d = [] ; c = []
for elem in a:
d.append(elem[2])
c.append(elem[3])
по второму желательно посмотреть сам файл name.txt и как ты из него читаешь.
потому как
['401' '0' '12' '18']
это список из одного элемента строкового ‘40101218’ и с ним ты можешь только поэлементно получить только числа
[4,0,1,0,1,2,1,8]

Отредактировано marvellik (Май 25, 2016 11:20:07)

Офлайн

#5 Май 25, 2016 11:47:41

ivsatel
Зарегистрирован: 2014-12-06
Сообщения: 18
Репутация: +  1  -
Профиль   Отправить e-mail  

Цикл в двумерном массиве

Oleg256
Как вариант:

a = [['1','2','3','4','5','6'],['2','3','4','5','6','7'],['3','4','5','6','7','8'],['4','5','6','7','8','9']]
print('Максимальное значение ==> ', max(a)) # Получать лучше из одномерного (хотя, зависит от услови)
print('Минимальное  значение ==> ', min(a)) # Получать лучше из одномерного (хотя, зависит от услови)
print('Максимальный индекс   ==> ', a.index(max(a)))
print('Из строки в int       ==> ', [int(j) for x in a for j in x])

Отредактировано ivsatel (Май 25, 2016 13:05:43)

Офлайн

#6 Май 25, 2016 12:34:28

vic57
Зарегистрирован: 2015-07-07
Сообщения: 913
Репутация: +  127  -
Профиль  

Цикл в двумерном массиве

vic57
Как получить индекс максимального, минимального числа из массива?
Как сделать чтобы данные в массиве из строк преобразовать в целые числа и чтобы они были через запятую.
Дело в том, что у меня в массив загружаются данные из файла name.txt (или name.csv) и они идут вот так в массиве уже:
это все в numpy есть.
numpy берет данные из файла подряд, а ты должен задать размерность сам (shape)
http://www.osc.phys.msu.ru/mediawiki/upload/Khalili/numpy.pdf
f = open('name.txt','r').readlines()
for i in xrange(3): print f[i]
покажи вывод
если читаешь csv:
http://ideafix.name/wp-content/uploads/2012/05/Python-7.pdf

Отредактировано vic57 (Май 25, 2016 14:03:49)

Офлайн

#7 Май 25, 2016 14:16:32

Oleg256
Зарегистрирован: 2013-08-10
Сообщения: 5
Репутация: +  0  -
Профиль   Отправить e-mail  

Цикл в двумерном массиве

Спасибо большое! Вы мне очень помогли. Буду учить матчасть, последняя ссылка почему только не работает, но я уже знаю что искать.
У меня еще есть нерешенная задача, но надеюсь сам справлюсь, если не получится тогда попрошу помощи.

Офлайн

#8 Май 25, 2016 14:49:02

vic57
Зарегистрирован: 2015-07-07
Сообщения: 913
Репутация: +  127  -
Профиль  

Цикл в двумерном массиве

http://ideafix.name/?cat=18
неплохой ресурс

Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version