【问题标题】:Array organizing in PythonPython中的数组组织
【发布时间】:2017-04-24 23:50:23
【问题描述】:

我有下面的python代码:

ht_24 = []
ht_23 = []
ht_22 = []
...

all_arr = [ht_24, ht_23, ht_22, ht_21, ht_20, ht_19, ht_18, ht_17, ht_16, ht_15, ht_14, ht_13, ht_12, ht_11, ht_10, ht_09, ht_08, ht_07, ht_06, ht_05, ht_04, ht_03, ht_02, ht_01]    

i = 0                                         
j = 0                                         
while i < 24:                                 
    while j < 24864:                          
        all_arr[i].append(read_matrix[j+i])   
        j += 24                               
        print(j)                              
    i += 1                                    
    print(i)

其中 read_matrix 是一个形状为 24864, 17 的数组。

我想从不同的起始索引 (0-24) 中读取每 24 行,并将它们附加到每行的相应数组中。请帮忙,这太难了!

【问题讨论】:

  • "形状为 24864, 17 的数组。"你确定不是 24 到 24 的 24864 吗?

标签: python arrays numpy matrix while-loop


【解决方案1】:

在 Python 中要学习的两件事:

ONE:for 循环——当你提前知道你要经过多少次循环时。您上面的 while 循环都是这种类型。试试这些:

for i in range(24):
    for j in range(0, 24864, 24):
        all_arr[i].append(read_matrix[j+i])
        print(j)
    print(i)

让语言为你处理索引值会更好。

二:列表推导:类似于列表构造中的 for 循环。您发布的整个代码可以变成一条语句:

all_arr = [[read_matrix[j+i] \
                for j in range(0, 24864, 24) ] \
            for i in range(24) ]

【讨论】:

  • 谢谢!我最初尝试使用 for 循环!
【解决方案2】:

你的问题有点不清楚,但我认为

list(zip(*zip(*[iter(read_matrix)]*24)))

可能是您正在寻找的。​​p>

list(zip(*zip(*[iter(range(24864))]*24)))[0][:5]

上面只看索引,第一个子列表的前几个元素是

(0, 24, 48, 72, 96)

【讨论】:

    【解决方案3】:

    numpy library 可以做你想做的事吗?

    import numpy as np
    # 24864 row, 17 columns
    read_matrix = np.arange(24864*17).reshape(24864,17)
    new_matrices = [[] for i in range(24)] 
    
    for i in range(24):
        # a has 17 columns
        a = read_matrix[slice(i,None,24)]
        new_matrices[i].append(a)
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2019-05-13
      • 1970-01-01
      • 1970-01-01
      • 2013-04-29
      • 2012-10-21
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多