【问题标题】:How to have a NumPy array only have integer values?如何让 NumPy 数组只有整数值?
【发布时间】:2020-11-30 17:33:18
【问题描述】:

我正在编写一个程序来根据用户输入的 n 来查找 Isis 矩形。该程序的目标是根据输入运行方程并输出一个矩形的维度数组,其中面积 == 周长。我是 NumPy 的新手,我正在努力寻找其他任何地方的答案。

下面是我负责输出数组的一段代码:

def choice_2():
    n = int(input("Please enter a positive integer for n: "))
    a1 = 2 * n +1
    a2 = 4 * n
    a = np.array(list(range(a1, a2+1)))
    for j in range(a1, a2+1):
        b = (2 * n * a)/(a - 2 * n)

    print(f"\nIsis rectangles of type {n}")
    print("----------------------------")
    print(np.array(list(zip(a,b))))

这就是我的输出:

Isis rectangles of type 10
----------------------------
[[ 21.         420.        ]
 [ 22.         220.        ]
 [ 23.         153.33333333]
 [ 24.         120.        ]
 [ 25.         100.        ]
 [ 26.          86.66666667]
 [ 27.          77.14285714]
 [ 28.          70.        ]
 [ 29.          64.44444444]
 [ 30.          60.        ]
 [ 31.          56.36363636]
 [ 32.          53.33333333]
 [ 33.          50.76923077]
 [ 34.          48.57142857]
 [ 35.          46.66666667]
 [ 36.          45.        ]
 [ 37.          43.52941176]
 [ 38.          42.22222222]
 [ 39.          41.05263158]
 [ 40.          40.        ]]

数学运算正常并且压缩正确,但我想删除具有浮点值的矩形。例如,边长为 21 和 420 的第一个矩形很好,但边长为 23 和 153.33333333 的第三个矩形不是我想要的最终数组。

【问题讨论】:

    标签: python arrays python-3.x numpy


    【解决方案1】:

    查找具有整数值的索引并使用此索引过滤 ab

    idx = (b == b.astype(int)).nonzero()
    print(np.array(list(zip(a[idx],b[idx]))))
    

    测试用例:

    n= 10
    a1 = 2 * n +1
    a2 = 4 * n
    a = np.array(list(range(a1, a2+1)))
    for j in range(a1, a2+1):
        b = (2 * n * a)/(a - 2 * n)
    
    print(f"\nIsis rectangles of type {n}")
    print("----------------------------")
    idx = (b == b.astype(int)).nonzero()
    print(np.array(list(zip(a[idx],b[idx]))))
    

    输出:

    Isis rectangles of type 10
    ----------------------------
    [[ 21. 420.]
     [ 22. 220.]
     [ 24. 120.]
     [ 25. 100.]
     [ 28.  70.]
     [ 30.  60.]
     [ 36.  45.]
     [ 40.  40.]]
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-12-24
      相关资源
      最近更新 更多