使用2d布尔值从3d numpy数组中提取1d数组

时间:2017-03-01 21:44:46

标签: python arrays numpy indexing reshape

说我有一个3d numpy数组:

i, j, k = 10, 3, 4

arr = np.arange(120).reshape(i, j, k)

和一个2d布尔数组:

mask = np.random.random((j, k)) > 0.5

n = mask.sum()

我希望能够从arr沿其第一维提取1d数组,这些数组与True的{​​{1}}值相对应。结果应该具有形状mask。怎么可以这样做?

我提取了一些旧代码,出于某种原因,我正在做(i, n),但这会给arr[mask]形状(我不知道为什么)并发出警告:

(n, k)

1 个答案:

答案 0 :(得分:1)

只需沿最后两个轴进行遮罩 -

protected void Page_Load(object sender, EventArgs e)
{
    if (!this.IsPostBack)
    {
        this.BindListView();
    }
}

private void BindListView()
{
    string constr = ConfigurationManager.ConnectionStrings["constr"].ConnectionString;
    using (SqlConnection con = new SqlConnection(constr))
    {
        using (SqlCommand cmd = new SqlCommand())
        {
            cmd.CommandText = "SELECT roleId, fName, lname,mobilenumber Country FROM Admin";
            cmd.Connection = con;
            using (SqlDataAdapter sda = new SqlDataAdapter(cmd))
            {
                DataTable dt = new DataTable();
                sda.Fill(dt);
                lvCustomers.DataSource = dt;
                lvCustomers.DataBind();
            }
        }
    }
}