Python使用函数创建数组

时间:2016-03-09 09:43:53

标签: python arrays numpy

我试图制作这个矩阵

array([[0,1,2],
       [10,11,12],
       [100,101,102],
       [110,111,112]])

使用此功能

def f(x,y):
   if x < 2:
      return 10 * x + y
   else :
      return 100 + 10 * x + 6

print(np.fromfunction(f,(4,3),dtype=int)

然而,这给了我一个错误

The truth value of an array with more than one element is ambiguous. Use a.any() or a.all()

我认为x并不意味着我打算使用的确切行。

如何修复此功能以获得上述结果,我能否知道问题所在?

3 个答案:

答案 0 :(得分:0)

feedingtypes() = wbfeedingtypes.Range("A2:A" & lrowfeedingtypes).Value

答案 1 :(得分:0)

这不起作用的原因是fromfunction传递给它的第一个参数数组对象而不是int。

代码抱怨因为a < 2是一个数组/ int比较,你应该运行a.all() < 2

工作代码变为:

from numpy import fromfunction

def f(x,y):
   if x.all() < 2:
      return 10 * x + y
   else :
      return 100 + 10 * x + 6

print fromfunction(f,(3,3),dtype=int)

答案 2 :(得分:0)

import numpy as np

def f(i,j):
    return np.where(i<2, i*10+j, 100+j+10*(i-2)  )

print np.fromfunction(f ,(4,3),dtype=int) 

输出:

[[  0   1   2]
 [ 10  11  12]
 [100 101 102]
 [110 111 112]]

np.where返回单个元素而不是整个数组。