python (numpy) — другой способ создания массива (из другого массива)

#python #arrays #numpy

#python #массивы #numpy

Вопрос:

я сделал этот код :

 from scitools.std import *


npoints=10

vectorpoint=array(random.uniform(-1,1,[1,2]))
experiment=array(random.uniform(-1,1,[npoints,2]))
print("vectorpoint=",vectorpoint)
print("experiment=",experiment)
print(vectorpoint.shape)
print(experiment.shape)
 

который работает нормально.
Я хотел спросить, можно ли записать массив «experiment» другим способом, например, например, «experiment= [vectorpoint,npoints]».Я хочу использовать массив векторных точек.

(Я не хочу снова и снова писать «random.uniform(-1,1,[npoints,2])».

Ответ №1:

Если вы хотите experiment быть массивом со npoints строками, которые все равны vectorpoint , вы можете использовать

 experiment = vstack([vectorpoint] * npoints)
 

Если вы хотите experiment , чтобы npoints строки были независимо сгенерированы random.uniform() , вам нужно снова вызвать последнюю функцию, поскольку vectorpoint содержит только числовые значения, возвращаемые, random.uniform() и никакой информации о том, как она была сгенерирована. Если повторение вас беспокоит, вы можете переместить его в функцию:

 def uniform(lines):
    return random.uniform(-1, 1, [lines, 2])
 

(Обратите внимание, что ваше использование array является избыточным — возвращаемое значение random.uniform() уже является массивом.)