2016-09-18 4 views
2

Я новичок в python и numpy, исходя из фона java.Вставка значений в массив numpy

Я хочу вставить значения int в массив. Однако мой текущий способ сделать это не приводит к правильным значениям. Я создаю массив 'a' размером 5 и хотел бы вставить значения int в 'a'.

data = ocr['data'] 
test_data = ocr['testdata'] 

a = np.empty(5, dtype=np.int) 
for t in range(0,5): 
    np.append(a,np.dot(np.subtract(test_data[t], data[0]), np.subtract(test_data[t], data[d]))) 
+0

Вы пытаетесь вставить значения в середину массива? В начале? Или добавить их до конца? – freddiev4

+0

добавьте его до конца – user

+0

Np.append - это просто форма np.concatenate. Он возвращает новый массив. Просмотрите свои документы. – hpaulj

ответ

3

При инициализации Numpy массив по np.empty(), он выделяет достаточно места для вас, но значения внутри этих якобы пустых ячеек будет случайным мусором. Например.

>>> a = np.empty(5,dtype = int) 
>>> a 
array([-2305843009213693952, -2305843009213693952,   4336320554, 
          0,     0]) 
>>> k = np.empty(5,dtype = int) 
>>> k 
array([-2305843009213693952, -2305843009213693952,   4336320556, 
       4294967297,  140215654037360]) 

Следовательно, у вас есть два варианта: инициализировать пустой массив длиной 0, затем добавить. Примечание: в качестве @hpaulj указал, что вам нужно, чтобы установить некоторый массив равным массива, возвращаемого np.append() т.е.

>>> a = np.array([],dtype = int) 
>>> a = np.append(a,2) 
>>> a = np.append(a,1) 
>>> a = np.append(a,3) 
>>> a = np.append(a,5) 
>>> a 
array([2, 1, 3, 5]) 

Или вы можете инициализировать с помощью np.empty(), но тогда вы должны использовать все ячейки, которые инициализированы сначала перед добавлением. то есть

>>> a = np.empty(3,dtype = np.int) 
>>> a[0] = 2 
>>> a[1] = 1 
>>> a[2] = 5 
>>> a = np.append(a,3) 
>>> a 
array([2, 1, 5, 3]) 
Смежные вопросы