Как создать базовую таблицу в Python? - PullRequest
0 голосов
/ 23 сентября 2019

Я хочу сделать таблицу из 10 столбцов.Я также хочу найти строку с минимальным значением в столбце 0 .

Пример:

[[1,2,3]
[4,5,6,]
[7,8,9]
[10,11,21]]

Как добраться до строки, минимальное значение которой равноколонка 0? Мне просто нужна функция, которая может использовать столбец 0. [1,2,3]

Ответы [ 2 ]

0 голосов
/ 23 сентября 2019

С помощью numpy arange мы можем легко создать диапазон чисел, а затем преобразовать их в двумерный массив:

In [70]: arr = np.arange(1,13).reshape(4,3)                                     
In [71]: arr                                                                    
Out[71]: 
array([[ 1,  2,  3],
       [ 4,  5,  6],
       [ 7,  8,  9],
       [10, 11, 12]])

argmin дает индекс минимального значения длявесь массив (сплющенный) или по строке или столбцу:

In [72]: np.argmin(arr, axis=1)                                                 
Out[72]: array([0, 0, 0, 0])

Столбец 0:

In [73]: arr[:,0]                                                               
Out[73]: array([ 1,  4,  7, 10])
In [74]: np.argmin(arr[:,0])                                                    
Out[74]: 0

pandas составляет хорошую таблицу.

In [76]: import pandas as pd                                                    
In [77]: df = pd.DataFrame(arr)                                                 
In [78]: df                                                                     
Out[78]: 
    0   1   2
0   1   2   3
1   4   5   6
2   7   8   9
3  10  11  12
0 голосов
/ 23 сентября 2019

Для этого есть встроенная функция range.Range не создает список, но итератор, который ведет себя как список и должен быть достаточно для вас (итератор - это «списки», но их элемент вычисляется только по запросу).

Итак:

a = range(10)
print(a) #-> range(0, 10)
for i in a:
    print(a) #-> 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 

print(a[2]) #-> 2
print(a[0]) #-> 0

Если вы не хотите начинать с 0, просто поставьте range(start_value, end_value).И если вы хотите, чтобы пользовательское приращение использовалось, используйте range(start_value, end_value, increment) (приращение по умолчанию равно 1, но если вы хотите вернуться назад, вы можете использовать -1).

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

Чтобы создать таблицу, подобнуюВ вашем примере вы можете использовать эту маленькую функцию:

def ct(nStart, nEnd, nPerSubTable):
 r = [] # Setup initial variable
 subTable = []
 for i in range(nStart, nEnd): # The main ranging
  subTable.append(i)
  if len(subTable) == nPerSubTable: # When the len of the sub table hit the requested one append to r and reset sub table
   r.append(subTable)
   subTable = []
 if len(subTable) > 0: # If there is some left over because the last subtable is smaller than expected, add it any way
  r.append(subTable)
 return r
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...