【问题标题】:I want to make a numpy array我想做一个numpy数组
【发布时间】:2020-10-28 16:17:15
【问题描述】:

正如标题所说,我想做一个 numpy 数组。

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

第一个问题,这个时候我想做大小可以改变的代码。我该怎么办?

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

第二个问题,我想接收这样的 k 值并发送与该值一样多的输出。 这个时候想从最弱到最强(最弱:较小的个数)打印前k行索引怎么办?:(

这样的例子。

输入

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

顶部(k):2

输出

0,2

如果Top(k):4,输出为

0,2,3,1

【问题讨论】:

    标签: python numpy random


    【解决方案1】:

    Numpy 使用静态数组(它是在 C 中实现的),您不能像使用 python 列表那样更改 numpy 数组的大小。但是,您可以使用 numpy.ndarray 构造函数从 python 列表中创建一个 numpy 数组:array = numpy.ndarray(my_python_array)

    对于第二个答案,您可以使用 ndarray 的函数 sum() 并像这样使用它:

    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 数组。

    【讨论】:

    • 我只想打印 k 个输出,我该怎么办?例如,如果 k 为 2,我只想表达到第二个值。
    • 我编辑了我的答案以最适合您的问题。在 python 中,您可以使用以下语法仅获取前 k 个元素(从 0 到 k-1): my_array[:k]
    猜你喜欢
    • 2020-10-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-03-18
    • 2021-09-10
    • 1970-01-01
    • 2021-10-25
    • 2016-08-16
    相关资源
    最近更新 更多