#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]