我在这里缺少一些简单的东西。我无法弄清楚如何传递2D数组(矩阵)的多个列并将它们作为单个列数组输出。
这是一个简单的例子:
import numpy as np
Z = lambda x1,x2: (x1*x2 - 3)^2 + 1
# a sample 2D array with 15 rows and 2 columns
x= np.arange(30).reshape((15,2))
answer = [Z(i[0],i[1]) for i in x]
最后一行代码是我的问题所在。我希望输出是一个包含15行的单列数组。
最后一点:我的代码只使用2列作为输入。如果它可以进一步扩展到灵活的列数,将非常感激。
答案 0 :(得分:1)
你能说出最后一句话:
answer = np.array([Z(i[0],i[1]) for i in x]).reshape(15,1)
给出:
array([[ -2],
[ 0],
[ 18],
[ 36],
[ 70],
[104],
[154],
[204],
[270],
[336],
[418],
[500],
[598],
[696],
[810]])
答案 1 :(得分:1)
你可以做到
import numpy as np
Z = lambda data, i, j: ((data[:,i]*data[:,j] - 3)**2 + 1)[:,np.newaxis]
# a sample 2D array with 15 rows and 2 columns
x= np.arange(30).reshape((15,2))
answer = Z(x,0,1)
所以也许你毕竟不需要lambda函数