Я хочу создать массив numpy

#python #numpy #random

#python #numpy #Случайный

Вопрос:

Как следует из названия, я хочу создать массив numpy.

 array=np.random.randint(2,size=(4,4))
  

Первый вопрос, на данный момент я хочу создать код, размер которого можно изменять. Что мне делать?

 top = input("Top(k):")
  

Второй вопрос, я хочу получить значение k, подобное этому, и отправить вывод столько, сколько это значение.
На данный момент я хочу напечатать верхние индексы k-row от самого слабого до самого сильного (самый слабый: меньшее количество единиц) Как это сделать??:(

пример, подобный этому.

ввод

 [[1,0,0,0],
[1,1,1,1],
[1,0,0,0],
[1,0,0,0]]
  

Top(k): 2

вывод

0,2

если Top (k):4, вывод

0,2,3,1

Ответ №1:

Numpy использует статические массивы (он реализован на C), вы не можете изменить размер массива numpy, как в случае со списками python. Однако вы можете использовать numpy.ndarray конструктор для создания массива numpy из списка python : array = numpy.ndarray(my_python_array) .

Для вашего второго ответа вы можете использовать функцию sum() ndarray и использовать ее следующим образом:

 histogram = []
for i in range(len(array_2D)):
    # Store the row indexes as well as number of ones
    histogram.append((i, array2D[i].sum())) 

# Sort regarding the number of ones
histogram.sort(key=lambda e:e[1]) 
for index, val in histogram[:k]:
    print(index, end=" ")
  

Здесь Array2D — это массив numpy, который вы получили из пользовательского ввода. Вы должны проанализировать вводимые пользователем данные, чтобы получить массив numpy, прежде чем выполнять этот код.

Комментарии:

1. Я хочу напечатать только k выходных данных, что мне делать? Например, если k равно 2, я хочу выразить только до второго значения.

2. Я отредактировал свой ответ, чтобы он наилучшим образом соответствовал вашему вопросу. В python вы можете использовать следующий синтаксис, чтобы получить только первые k элементов (от 0 до k-1): my_array[:k]