numpy随机数组受其他数组限制

时间:2019-02-03 14:59:42

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

我有两个大小相同的numpy ndarray。

a = np.random.randn(x,y)
b = np.random.randn(x,y)

我想创建一个新数组,其中每个元素都是ab中具有相同索引的元素值之间的随机值。因此,每个元素c[i][j]应该在a[i][j]b[i][j]之间。 除了遍历c的所有元素并分配随机值之外,还有没有更快,更简单/更有效的方法?

3 个答案:

答案 0 :(得分:3)

您可以这样做:

awk 'gsub(/^SEARCH/,"LINE 1\nLINE 2"){s=1}END{if(!s)print "LINE 1\nLINE 2"}1' file | tee file

with d =随机数组,其值在0到1之间,且尺寸与a相同

答案 1 :(得分:2)

您可以从文档中使用numpy.random.uniform

  

low:float或float的array_like,可选

     

输出间隔的下边界。生成的所有值将是   大于或等于低。默认值为0。

     

high:float或float的array_like

     

输出间隔的上限。生成的所有值将是   不到高。默认值为1.0。

因此var now = DateTime.UtcNow; var currentDate = now.Date; var tomorrow = currentDate.AddDays(1); var left = currentDate.ToUnixTimeSeconds(); var right = tomorrow.ToUnixTimeSeconds(); var results = await Settings.DataBase.GetCollection<Video>("Videos") .Find(x => x.ViewsToday != null && x.ViewsToday.Date >= left && x.ViewsToday.Date < right) .ToListAsync(); low都可以接收数组作为参数,为完整起见,请参见以下代码:

代码:

high

输出

import numpy as np

x, y = 5, 5

a = np.random.randn(x, y)
b = np.random.randn(x, y)

high = np.maximum(a, b)
low = np.minimum(a, b)

c = np.random.uniform(low, high, (x, y))

print((low <= c).all() and (c <= high).all())

在上面的示例中,请注意使用maximumminimum来构建True high。最后一行检查确实所有low的值都在chigh之间。如果您感兴趣,则可以单行完成所有操作:

low

答案 2 :(得分:2)

以下是使用 public static class DiffEngine { private static Regex r = new Regex(@"(?<=[\s])", RegexOptions.Compiled); public static string Process(ref string TextA, ref string TextB) { var A = r.Split(TextA); var B = r.Split(TextB); var max = Math.Max(A.Count(), B.Count()); var sbDel = new StringBuilder("<del>"); var sbIns = new StringBuilder("<ins>"); var sbOutput = new StringBuilder(); var aCurr = string.Empty; var bCurr = string.Empty; var aNext = string.Empty; var bNext = string.Empty; for (int i = 0; i < max; i++) { aCurr = (i > A.Count() - 1) ? string.Empty : A[i]; bCurr = (i > B.Count() - 1) ? string.Empty : B[i]; aNext = (i > A.Count() - 2) ? string.Empty : A[i + 1]; bNext = (i > B.Count() - 2) ? string.Empty : B[i + 1]; if (aCurr == bCurr) { sbOutput.Append(aCurr); } else { if (aNext != bNext) { sbDel.Append(aCurr); sbIns.Append(bCurr); } else { sbDel.Append(aCurr); sbIns.Append(bCurr); sbOutput .Append(sbDel.ToString()) .Append("</del>") .Append(sbIns.ToString()) .Append("</ins>"); sbDel.Clear().Append("<del>"); sbIns.Clear().Append("<ins>"); } } } A = null; B = null; sbDel = null; sbIns = null; return sbOutput.ToString(); } } 的想法:

numpy