qq_42988723 2021-02-06 19:19 采纳率: 0%
浏览 208

numpy多个二维矩阵中每一行随机一个取值,做排列组合后求和运算

1、首先计算出 6个二维矩阵 : nn1、 nn2、 nn3、 nn4、 nn5、 nn6

 

import numpy as np

n1 = np.array([60,0,-60])
n2 = np.array([80,0,-80])
n3 = np.array([100,0,-100])
n4 = np.array([[100,0,-100]])
n5 = np.array([80,0,-80])
n6 = np.array([60,0,-60])

n = np.array([[0.7],[0.1],[0.1],[0.1]])

nn1 = np.multiply(n1,n)
nn2 = np.multiply(n2,n)
nn3 = np.multiply(n3,n)
nn4 = np.multiply(n4,n)
nn5 = np.multiply(n5,n)
nn6 = np.multiply(n6,n)

-

2、根据打印出来的结果描述随机相加的一种情况如下:

 

nn1打印出来的结果:
[[ 42.   0. -42.]        #假设这一行随机选出 第一个数:42
 [  6.   0.  -6.]        #假设这一行随机选出 第三个数:-6
 [  6.   0.  -6.]        #假设这一行随机选出 第二个数:0
 [  6.   0.  -6.]]       #假设这一行随机选出 第三个数:-6
这个二维数组每一行随机排列组合总共有3的4次方 = 81种情况(上方【假设】只列出了一种随机情况)
得到的是81行 * 4列的二维数组 (nn1随机取出的这一行结果为[42,-6,0,-6])


nn2打印出来的结果:
[[ 56.   0. -56.]        #假设这一行随机选出 第三个数:-56
 [  8.   0.  -8.]        #假设这一行随机选出 第二个数:0
 [  8.   0.  -8.]        #假设这一行随机选出 第一个数:8
 [  8.   0.  -8.]]       #假设这一行随机选出 第一个数:8
这个二维数组每一行随机排列组合总共有3的4次方 = 81种情况(上方【假设】只列出了一种随机情况)
得到的是81行 * 4列的二维数组 (nn2随机取出的这一行结果为[-56,0,8,8])


nn3打印出来的结果:
[[ 70.   0. -70.]        #假设这一行随机选出 第二个数:0
 [ 10.   0. -10.]        #假设这一行随机选出 第三个数:-10
 [ 10.   0. -10.]        #假设这一行随机选出 第三个数:-10
 [ 10.   0. -10.]]       #假设这一行随机选出 第一个数:10
这个二维数组每一行随机排列组合总共有3的4次方 = 81种情况(上方【假设】只列出了一种随机情况)
得到的是81行 * 4列的二维数组(nn3随机取出的这一行结果为[0,-10,-10,10])


nn4打印出来的结果:
[[ 70.   0. -70.]        #假设这一行随机选出 第一个数:70
 [ 10.   0. -10.]        #假设这一行随机选出 第一个数:10
 [ 10.   0. -10.]        #假设这一行随机选出 第三个数:-10
 [ 10.   0. -10.]]       #假设这一行随机选出 第二个数:0
这个二维数组每一行随机排列组合总共有3的4次方 = 81种情况(上方【假设】只列出了一种随机情况)
得到的是81行 * 4列的二维数组(nn4随机取出的这一行结果为[70,10,-10,0])


nn5打印出来的结果:
[[ 56.   0. -56.]        #假设这一行随机选出 第一个数:56
 [  8.   0.  -8.]        #假设这一行随机选出 第二个数:0
 [  8.   0.  -8.]        #假设这一行随机选出 第三个数:-8
 [  8.   0.  -8.]]       #假设这一行随机选出 第二个数:0
这个二维数组每一行随机排列组合总共有3的4次方 = 81种情况(上方【假设】只列出了一种随机情况)
得到的是81行 * 4列的二维数组(nn5随机取出的这一行结果为[56,0,-8,0])


nn6打印出来的结果:
[[ 42.   0. -42.]        #假设这一行随机选出 第三个数:-42
 [  6.   0.  -6.]        #假设这一行随机选出 第一个数:6
 [  6.   0.  -6.]        #假设这一行随机选出 第三个数:-6
 [  6.   0.  -6.]]       #假设这一行随机选出 第二个数:0
这个二维数组每一行随机排列组合总共有3的4次方 = 81种情况(上方【假设】只列出了一种随机情况)
得到的是81行 * 4列的二维数组(nn6随机取出的这一行结果为[-42,6,-6,0])

-

3、最后从 nn1、 nn2、 nn3、 nn4、 nn5、 nn6 中的每一种情况的所有元素相加得到一个值

 

nn1随机取出的这一行结果为[42,-6,0,-6]    #(总共有81行)

nn2随机取出的这一行结果为[-56,0,8,8]     #(总共有81行)

nn3随机取出的这一行结果为[0,-10,-10,10]  #(总共有81行)

nn4随机取出的这一行结果为[70,10,-10,0]   #(总共有81行)

nn5随机取出的这一行结果为[56,0,-8,0]     #(总共有81行)

nn6随机取出的这一行结果为[-42,6,-6,0]    #(总共有81行)


nnn = nn1 + nn2 + nn3 + nn4 + nn5 +nn6
print(nnn)
[42,-6,0,-6,-56,0,8,8........56,0,-8,0,-42,6,-6,0]

此时nnn的长度为24个元素
求这一次随机取出的六组元素的和: sum(nnn) = 56
此时56放到结果集的【一维数组】中
同样的方式计算 81的6次方 种情况最后组成的【一维数组】
【一维数组】中有 282429536481 个元素

补充说明:
6个[81行4列]的二维数组以行做排列组合, 总共【81的6次方=282429536481】种情况,
得到【282429536481行 * 24列】的二维数组,然后对每一行的24个元素求和  
得到【282429536481行 *1列】的二维数组,再转成有282429536481个元素的【一维数组】

-

4、接下来对这个 【一维数组】中有 282429536481 个元素 进行统计分析

 

1、根据【一维数组】中不同值做groupby进行分组统计。
2、统计结果可以是 数值对应的数量组成的二维数组或者画出柱状图
3、计算出合理的正、负极值(例如最大值336,最小值-336)、方差、正态分布等等统计方法,
   不仅限于此只要能说明统计分析思路和理由即可。
4、这些统计方法采用python代码实现,最好用numpy或者pandas
  • 写回答

1条回答 默认 最新

  • CSDN-Ada助手 CSDN-AI 官方账号 2022-09-07 17:18
    关注
    不知道你这个问题是否已经解决, 如果还没有解决的话:

    如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 以帮助更多的人 ^-^
    评论

报告相同问题?

悬赏问题

  • ¥15 两台交换机分别是trunk接口和access接口为何无法通信,通信过程是如何?
  • ¥15 C语言使用vscode编码错误
  • ¥15 用KSV5转成本时,如何不生成那笔中间凭证
  • ¥20 ensp怎么配置让PC1和PC2通讯上
  • ¥50 有没有适合匹配类似图中的运动规律的图像处理算法
  • ¥15 dnat基础问题,本机发出,别人返回的包,不能命中
  • ¥15 请各位帮我看看是哪里出了问题
  • ¥15 vs2019的js智能提示
  • ¥15 关于#开发语言#的问题:FDTD建模问题图中代码没有报错,但是模型却变透明了
  • ¥15 uniapp的h5项目写一个抽奖动画