如何用Numpy筛选数组中判别式≥0的向量?
Numpy筛选光线追踪判别式向量的解决方案
你的错误根源在于索引方式不对:
array[0]取的是数组里第一个三维向量,得到的是长度为3的数组,因此array[0] >= 0生成的布尔数组维度为3,但原数组包含10个向量(维度0长度为10),两者维度不匹配才触发报错。- 正确做法是提取所有向量的第0个元素(即判别式),用Numpy切片语法
array[:, 0],这会返回长度为10的数组,对应每个向量的判别式值。修改后的筛选代码:newArray = array[array[:, 0] >= 0]
补充说明
如果你的数组存储格式是(3, 10)(行对应向量分量,列对应不同向量),则需要改成array[0, :] >= 0来获取所有判别式。但根据你描述的“10个三维向量”,标准存储形状应为(10, 3),因此上述代码完全适用,且属于纯Numpy操作,运行效率远高于for循环。
内容的提问来源于stack exchange,提问作者I_m_not_here
相关产品推荐
相关产品推荐

