Я пытаюсь преобразовать массив из списка в массив: фактически у меня есть следы слипта в 9 группах tempTracesHW [hw] hw = [0,9], затем я хочу отобразить только один элемент из каждого temTracesHW, поэтому я конвертирую tempTracesHW [i ] в таблицу, как это:

tempTraces = np.load(r'E:\\blockData\\Concatenated_Traces.npy')

print (tempTraces.shape)     
tempSbox = [inv_sbox[tempCText[i][0] ^ tempKey[i][0]] for i in range(len(tempCText))] 
tempHW   = [hw[s] for s in tempSbox]

tempTracesHW = [[] for _ in range(9)]
print tempTracesHW
        # Fill them up
for i in range(len(tempTraces)):
    HW = tempHW[i]
    tempTracesHW[HW].append(tempTraces[i])

# Switch to numpy arrays        
tempTracesHW = [np.array(tempTracesHW[HW]) for HW in range(9)]
print(tempTracesHW)

for i in range(HW):
    print('hw=',i)
    print(len(tempTracesHW[i]))
    print(tempTracesHW[i])
    Tab= np.asarray(tempTracesHW[i])
    print(Tab.shape)
    for k in len(Tab):
        print(Tab[k])

Но это дает мне эту ошибку:

    for k in len(Tab):

TypeError: 'int' object is not iterable
-1
nani92 30 Авг 2017 в 18:26

3 ответа

Лучший ответ

Вы можете использовать enumerate, если хотите иметь возможность перебирать индексы или фактические значения.

for i, k in enumerate(Tab):
    print(Tab[i]) # print(k)

Вы не можете перебрать len(Tab), потому что это скаляр, а не итерация.


Tab является массивом numpy, и они имеют великолепно выглядящие __repr__ реализации. Почему не просто print(Tab)?

1
cs95 30 Авг 2017 в 15:29
import numpy as np
ar = np.asarray([1,2,3])
a_list = list(ar)

Для вашего кода:

for k in list(Tab):
0
KEXIN WANG 30 Авг 2017 в 15:31

Должно быть:

for k in Tab:
   print k

Len (Tab) дает длину Tab.

1
GuangshengZuo 30 Авг 2017 в 15:28