2016-12-16 2 views
0

Попытка написать мою первую программу на питоне. В программе рабочего образца (сценарий), некоторый массив данных определяется следующим образом:Как создать массив в Python

x_data = np.random.rand(100).astype(np.float32) 

И когда я впоследствии типа «x_data» в консоли Python, он возвращает

>>> x_data 
     array([ 0.16771448, 0.55470788, 0.36438608, ..., 0.21685787, 
     0.14241569, 0.20485006], dtype=float32) 

и сценарий работает.

Теперь я хочу использовать свои собственные наборы данных. Пытаюсь заявление как этот

my_data = [1,2,3,4,5] 

и заменить использование x_data с my_data, но тогда программа не работает. Я заметил, что когда я типа «my_data» в консоли Python, он возвращает

>>> my_data 
    [1, 2, 3, 4, 5] 

, который отсутствует в части, которые говорят, «массив» и «DTYPE = float32». Я предполагаю, что разница связана с проблемой.

Как я могу объявить набор данных my_data, который будет обрабатываться как x_data, чтобы я мог передавать свои собственные данные в программу?

Я думаю, что это не имеет значения, но вот полный пример сценария, я начал с (который работает):

import tensorflow as tf 
import numpy as np 

# Create 100 phony x, y data points in NumPy, y = x * 0.1 + 0.3 
x_data = np.random.rand(100).astype(np.float32) 
y_data = x_data * 0.1 + 0.3 

# Try to find values for W and b that compute y_data = W * x_data + b 
# (We know that W should be 0.1 and b 0.3, but TensorFlow will 
# figure that out for us.) 
W = tf.Variable(tf.random_uniform([1], -1.0, 1.0)) 
b = tf.Variable(tf.zeros([1])) 
y = W * x_data + b 

# Minimize the mean squared errors. 
loss = tf.reduce_mean(tf.square(y - y_data)) 
optimizer = tf.train.GradientDescentOptimizer(0.5) 
train = optimizer.minimize(loss) 

# Before starting, initialize the variables. We will 'run' this first. 
init = tf.global_variables_initializer() 

# Launch the graph. 
sess = tf.Session() 
sess.run(init) 

# Fit the line. 
for step in range(201): 
    sess.run(train) 
    if step % 20 == 0: 
     print(step, sess.run(W), sess.run(b)) 

# Learns best fit is W: [0.1], b: [0.3] 

ответ

3

Я предполагаю, что вы пришли из Матлаба?

Нотация квадратного кронштейна Python не дает вам никакого типа array по умолчанию: он дает вам более простой объект встроенного типа list. numpy, вездесущий сторонний пакет, это то, что вы хотите использовать для массивов. Очевидно, что у вас уже есть это.

Вторая строка ниже преобразует переменную из list в numpy массив с тем же типом данных в качестве другого массива x_data:

my_data = [1,2,3,4,5] 
my_data = np.array(my_data, dtype=np.float32) 
+1

Я всегда избегал Matlab и Python. Я вырос на C++. Спасибо за быструю помощь! –

1

NumPy построит массив из списка, если вы просто использовать np.array:

import numpy as np 
arr = np.array([1, 2, 3, 4]) 

Обратите внимание, что вы можете указать тип данных, а также:

arr_int32 = np.array([1, 2, 3, 4], dtype=np.int32) 
arr_float = np.array([1, 2, 3, 4], dtype=np.float64) 

Также обратите внимание, что есть моменты, когда вы можете работать с объектом, который может быть списком, или может быть массивом numpy. np.array скопирует массив, если вы передадите его в качестве ввода. Иногда это нежелательно по соображениям производительности. Если вы окажетесь в этой ситуации, вы можете использовать np.asarray, который преобразует не-массивы в массивы, но не возвратит массивы.

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