【问题标题】:Numpy/Arrays FunctionNumpy/数组函数
【发布时间】:2017-03-14 15:24:48
【问题描述】:

编写一个函数 calc_frac(a,axis=0),它接受一个仅包含 0 和 1 的二维 numpy 数组,并返回一个数组,给出每列(如果 axis=0)或每行(如果轴 = 1)。

这是我目前所拥有的

import numpy as np
a = np.array([[1,0,1],[1,1,0],[0,1,0]])
b = np.zeros((3,1))
col_r1 = a[:,0:1]
col_r2 = a[:,1:2]
col_r3 = a[:,2:3]
i=0
j=0
k=0
for i in col_r1:
    if i >= 1:
        i = i+1
        b[0]= i/3

for k in col_r2:
    if k >= 1:
        k=k+1
        b[1] = k/3

for f in col_r3:
    if f >= 1:
        f=f+1
        b[2] = f/3
print(b)
print(col_r3)

这是我遇到的问题:

  1. 如果在所有突变后打印 b,它会将 b[2] 显示为 0.6667 而不是 0.333。 因为该列应该只有数字 1 的 1 个副本

  2. 我不确定如何将此代码重写为问题中上述格式的函数。

  3. 由于我不熟悉 numpy,我想知道是否有一种方法可以编写代码,在不使用 for 循环的情况下执行相同的功能。

提前致谢

【问题讨论】:

    标签: python python-3.x numpy


    【解决方案1】:
    def calc_frac(a, axis=0):
        return a.mean(axis=axis)
    

    关键是1和0数组的平均值 1的分数。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-11-05
      • 2017-08-18
      • 1970-01-01
      • 1970-01-01
      • 2019-07-25
      • 2011-11-23
      相关资源
      最近更新 更多