【发布时间】:2019-09-15 19:34:26
【问题描述】:
我想从一个函数创建一个矩阵,如果行索引小于给定阈值 k,则 (3,3) 矩阵 C 的值等于 1。
import numpy as np
k = 3
C = np.fromfunction(lambda i,j: 1 if i < k else 0, (3,3))
但是,这段代码抛出了一个错误
"具有多个元素的数组的真值是不明确的。 使用 a.any() 或 a.all()" 我不太明白为什么。
【问题讨论】:
-
创建一个零数组
c=np.zeros((3,3)),然后c[:k,:]=1? -
这可行,但我对这个错误的性质很感兴趣。
-
嗯?当然
l = lambda i,j: 1 if i < k else 0和C = np.fromfunction(np.vectorize(l), (5,3)) -
np.fromfunction 只是创建一个网格,并通过一次调用将整个内容传递给您的函数。看看它的代码。
标签: python python-3.x numpy matrix vectorization