如何在Python中创建基本表?

时间:2019-09-22 21:55:47

标签: python arrays pandas numpy

我想制作一个10列的表格。我还想在列0中找到具有最小值的

示例:

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

如何到达列0的最小值的行? 我只需要一个可以使用列0的函数。 [1,2,3]

2 个答案:

答案 0 :(得分:0)

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

答案 1 :(得分:0)

使用numpy arange,我们可以轻松地创建一系列数字,然后将它们整形为2d数组:

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