【发布时间】: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)
这是我遇到的问题:
如果在所有突变后打印 b,它会将 b[2] 显示为 0.6667 而不是 0.333。 因为该列应该只有数字 1 的 1 个副本
我不确定如何将此代码重写为问题中上述格式的函数。
由于我不熟悉 numpy,我想知道是否有一种方法可以编写代码,在不使用 for 循环的情况下执行相同的功能。
提前致谢
【问题讨论】:
标签: python python-3.x numpy