2015-04-24 3 views
0

Я создал массив, создав группу случайных чисел и преобразовал их в тип int. Тем не менее, я не думаю, что мой путь ниже эффективен. Есть ли лучший способ изменить тип данных в массиве?изменить тип данных массива в python

# standard normal distributed random numbers 
c=random.randn(5,5) 
c 

array([[-0.37644781, -0.81347483, -0.36895952, -2.68702544, -0.96780752], 
    [ 0.05293328, 1.65260753, 0.55586611, -0.5786392 , 0.50865003], 
    [ 1.25508358, 0.51783276, 2.36435212, -0.23484705, -1.20999296], 
    [ 2.07552172, 0.65506648, 0.10231436, -0.26046045, 0.40148111], 
    [ 0.24864496, -1.8852587 , -2.51091886, 1.01106003, 1.53118353]]) 

d=array([[-0.37644781, -0.81347483, -0.36895952, -2.68702544, -0.96780752], 
     [ 0.05293328, 1.65260753, 0.55586611, -0.5786392 , 0.50865003], 
     [ 1.25508358, 0.51783276, 2.36435212, -0.23484705, -1.20999296], 
     [ 2.07552172, 0.65506648, 0.10231436, -0.26046045, 0.40148111], 
     [ 0.24864496, -1.8852587 , -2.51091886, 1.01106003, 1.53118353]],dtype=int) 

d 
array([[ 0, 0, 0, -2, 0], 
     [ 0, 1, 0, 0, 0], 
     [ 1, 0, 2, 0, -1], 
     [ 2, 0, 0, 0, 0], 
     [ 0, -1, -2, 1, 1]]) 
+0

Нужны ли вам они нормально распределены? Если это не так, 'np.random.random_integers (-2, 2, (5, 5))' или подобное может сделать это. – jonrsharpe

+0

Я понимаю, что вы говорите, но моя цель - создать массив с помощью любого способа и изменить тип данных в массиве на другой тип, например, от int до float или от int до complex. –

ответ

4

Либо найти способ, чтобы получить выход с правильным типом или вы используете astype см docs, чтобы изменить тип массива

В вашем случае следующий пример дает вам массив типа np.int

c=random.randn(5,5).astype(np.int) 
+0

Будет ли это на самом деле более эффективным? Он выполняет те же действия, создавая массив float, а затем преобразует его в целое. – jonrsharpe

+0

@ jonrsharpe: Я так не думаю ... но вы не копируете вывод в новый массив вручную – plonser

+0

@jonrsharpe: Несмотря на то, что OP попросил «эффективно», я подозреваю, что он действительно не означает «эффективный», , Вы действительно думаете, что стоимость копирования и каста 5x5 NumPy-массива является узким местом в его программе? Или что он находит вручную распечатку массива, копирование, вставка и редактирование - это неэффективный способ кодирования? – abarnert

0

также: np.cast[int](c), который не предполагает, что это аргумент является массивом NumPy.

Смежные вопросы