2016-12-16 9 views
0

Versuchen, mein erstes Python-Programm zu schreiben. In einem Arbeitsbeispielprogramm (Skript), werden einige Array von Daten wie folgt definiert:So erstellen Sie ein Array in Python

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

Und wenn ich später in einer Python-Konsole „x_data“ geben, es gibt

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

und das Skript funktioniert.

Jetzt möchte ich stattdessen meine eigenen Datensätze verwenden. Ich versuche, eine Aussage wie diese

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

und die Verwendung von x_data mit my_data ersetzen, aber dann wird das Programm nicht funktionieren. Ich stelle fest, dass, wenn ich „my_data“ in der Python-Konsole eingeben, es

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

gibt, die die Teile fehlen, die „Matrix“ und „dtype = float32“ sagen. Ich vermute, dass der Unterschied mit dem Problem zusammenhängt.

Wie kann ich einen Datensatz my_data deklarieren, der wie x_data behandelt wird, damit ich meine eigenen Daten in das Programm einspeisen kann?

Ich denke, es ist irrelevant, aber hier ist die vollständige Beispielskript ich aus gestartet (die funktioniert):

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] 

Antwort

3

Ich schätze, du kommst aus Matlab?

Python Square-Bracket-Notation gibt Ihnen keinen Typ von array standardmäßig: es gibt Ihnen ein einfacheres Objekt des integrierten Typs list. numpy, das ubiquitäre Drittanbieterpaket ist, was Sie für Arrays verwenden möchten. Natürlich hast du es schon verfügbar.

Die zweite Zeile unter konvertiert Ihren Variable von einem list zu einem numpy Array mit dem gleichen Datentyp wie Ihre anderen Array x_data:

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

Ich habe immer Matlab und Python vermieden. Ich bin mit C++ aufgewachsen. Danke für die schnelle Hilfe! –

1

numpy wird ein Array aus einer Liste konstruieren, wenn Sie nur np.array verwenden:

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

Beachten Sie, dass Sie den Datentyp als auch angeben:

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

Beachten Sie außerdem, dass Sie möglicherweise mit einem Objekt arbeiten, das möglicherweise eine Liste oder ein Array mit Zahlen ist. np.array kopiert ein Array, wenn Sie das als Eingabe übergeben. Das ist manchmal aus Leistungsgründen nicht wünschenswert. Wenn Sie sich in dieser Situation befinden, können Sie np.asarray verwenden, die Nicht-Arrays in Arrays konvertiert, aber Arrays unberührt zurückgibt.

Verwandte Themen