Найти - Пользователи
Полная версия: Цикл в двумерном массиве
Начало » Python для новичков » Цикл в двумерном массиве
1
Oleg256
Подскажите пожалуйста решение. Поиск не помог к сожалению. Недавно начал изучать 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
Знаю, что при помощи цикла это можно сделать гораздо проще, но не знаю как.
vic57
>>> 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]
>>> 
Oleg256
Спасибо. Но теперь появились новые вопросы.
Как получить индекс максимального, минимального числа из массива?
Как сделать чтобы данные в массиве из строк преобразовать в целые числа и чтобы они были через запятую.
Дело в том, что у меня в массив загружаются данные из файла name.txt (или name.csv) и они идут вот так в массиве уже:
['401' '0' '12' '18']
['402' '1' '21' '8']
А мне нужны там целые числа и через запятую. Если сможете подскажите пожалуйста. Я постараюсь тоже найти ответ, библиотеку numpy я подключил, теперь надо читать документацию, потому что там свои функции и методы.
marvellik
по перврму вопросу
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]
ivsatel
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])
vic57
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
Oleg256
Спасибо большое! Вы мне очень помогли. Буду учить матчасть, последняя ссылка почему только не работает, но я уже знаю что искать.
У меня еще есть нерешенная задача, но надеюсь сам справлюсь, если не получится тогда попрошу помощи.
vic57
http://ideafix.name/?cat=18
неплохой ресурс
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB