从3D阵列和2D Arrray创建4D矩阵

时间:2018-08-23 15:25:02

标签: python arrays python-3.x pandas numpy

我试图创建一种我认为对冲基金经济学的简单可视化方法,但是我正在努力解决这些问题。

我有4个数组,分别代表回报,管理费,资本和perf_fee:

pct_fee = np.linspace(0.5,1.5,num = 3).reshape(3,)
capital = np.linspace(50, 150.0, num = len(pct_fee))
perf_fee = np.linspace(10.0, 20.0, num = len(pct_fee))
returns = np.linspace(5.0, 15.0, num = len(pct_fee))

然后我将数组相乘:

fee_income = np.multiply.outer((pct_fee/100), capital).transpose() #3x3 matrix
perf = np.multiply.outer((returns/100), capital).transpose() #3X3 matrix
perf_fees = np.multiply.outer((perf_fee/100), perf).transpose() #3X3X3 matrix

这给我留下fee_income,这是管理费和资本的矩阵,而perf_fees是收益,资本和绩效费的矩阵。

结合这两个数组的最佳方法是什么,以使我有一个total_fees矩阵,该矩阵由不同的资本,不同的执行费,不同的收益和不同的管理费组成?

我尝试向fee_income添加一个尺寸并使用np.dstack,但是我不断收到错误ValueError: all the input array dimensions except for the concatenation axis must match exactly

坦率地说,我不确定这是否是解决问题的最佳方法;我相信我期待一个4D阵列。

谢谢。

1 个答案:

答案 0 :(得分:1)

这是您要寻找的东西吗

import numpy as np

pct_fee = np.linspace(0.5, 1.5, num=3)
capital = np.linspace(50, 150.0, num=len(pct_fee))
perf_fee = np.linspace(10.0, 20.0, num=len(pct_fee))
returns = np.linspace(5.0, 15.0, num=len(pct_fee))

pct_fee_grid, capital_grid, perf_fee_grid, returns_grid = np.meshgrid(pct_fee, capital, perf_fee, returns)

total_fees_grid = capital_grid*returns_grid*perf_fee_grid + capital_grid*pct_fee_grid 

print(total_fees_grid.shape)  # (3, 3, 3, 3)