我有一个看起来像这样的数组列表(每个数组的尺寸和列表的长度不一定固定):
mylist = np.array([[1,2],[3,4],[5,6],[7,8],[9,10]]),
np.array([[1,2],[1,2]]),
np.array([[1,2,3,4,5],[3,4,5,6,7]]),
np.array([1,2])
我想获取列表中所有元素的总和,并在末尾得到一个浮点数。
在这种情况下,结果将是:
sum = 1+2 + 3+4 + 5+6 + 7+8 +9+10 +
1+2 + 1+2 +
1+2+3+4+5 + 3+4+5+6+7 +
1+2
答案 0 :(得分:2)
首先请注意,您输入的内容在语法上不正确。一旦正确定义了public ActionResult Receipt(int year, int Id, ReceiptViewModel model)
{
var root = Server.MapPath("~/App_Data/");
var pdfname = String.Format("{0}-{1}-{2}.pdf", Id, year, Guid.NewGuid().ToString());
var path = Path.Combine(root, pdfname);
path = Path.GetFullPath(path);
IUserMailer mailer = new UserMailer();
var a = new ViewAsPdf("Receipt", new { Id, year })
{
FileName = pdfname,
PageSize = Rotativa.Options.Size.A5,
PageOrientation = Rotativa.Options.Orientation.Portrait,
SaveOnServerPath = path
};
var byteArray = a.BuildFile(ControllerContext);
var fileStream = new FileStream(path, FileMode.Create, FileAccess.Write);
fileStream.Write(byteArray, 0, byteArray.Length);
fileStream.Close();
// email the pdf as attachment
mailer.BulkReceipt(path, pdfname, Id, year).SendAsync();
// Delete file
System.IO.File.Delete(path);
return View("ReceiptSuccess", a);
}
个对象中的list
个,就可以将np.ndarray
与一个生成器表达式一起使用:
sum
此外,从不内置阴影,因此不要为变量L = [np.array([[1,2],[3,4],[5,6],[7,8],[9,10]]),
np.array([[1,2],[1,2]]),
np.array([[1,2,3,4,5],[3,4,5,6,7]]),
np.array([1,2])]
res = sum(i.sum() for i in L) # 104
或list
命名。
如果两个维度之一在所有数组中的大小都相同,则可以将它们合并为一个数组,然后使用矢量化方法:
sum