Python中文
首页
教程
问答
标签
搜索
登录
注册
使3d numpy数组的每N个切片连续
回答此问题可获得
20
贡献值,回答如果被采纳可获得
50
分。
<h2>声明</h2> <p>假设我们有一个三维的numpy数组,<code>A</code>,它的形状是<code>(X, Y, Z)</code>。我想创建一个新的数组<code>B</code>,它的形状也是<code>(X, Y, Z)</code>。你知道吗</p> <p>我们希望沿第0轴的<code>B</code>的前n个片(<code>:n</code>)对应于沿第0轴的<code>A</code>的每m个片(<code>::m</code>)。你知道吗</p> <p>我们还希望<code>B</code>的片<code>n:2*n</code>对应于<code>A</code>的每个<code>m+1</code>片(<code>1::m</code>)。以此类推。你知道吗</p> <p>使用矢量化numpy计算实现这一点的最佳方法是什么?你知道吗</p> <h2>示例</h2> <p>上面的陈述最好通过一个例子来理解。因此,让我们从设置一些示例数组<code>A</code>开始:</p> <pre class="lang-py prettyprint-override"><code>import numpy as np # Create array A with shape (15, 3, 3) n = 3; m = 5 a = np.array([i * np.eye(3) for i in range(1, 1+m)]) A = np.tile(a, (n, 1, 1)) </code></pre> <p>如果我们看一下<code>A</code>的第0个切片,我们会发现:</p> <pre class="lang-py prettyprint-override"><code>print(A[0]) [[1. 0. 0.] [0. 1. 0.] [0. 0. 1.]] print(A[1]) [[2. 0. 0.] [0. 2. 0.] [0. 0. 2.]] </code></pre> <p>。。。你知道吗</p> <pre class="lang-py prettyprint-override"><code>print(A[4]) [[5. 0. 0.] [0. 5. 0.] [0. 0. 5.]] print(A[5]) [[1. 0. 0.] [0. 1. 0.] [0. 0. 1.]] </code></pre> <p>等等。你知道吗</p> <p><code>A</code><em>中的值并不重要,但应该有助于说明原始语句。你知道吗</p> <p>我想知道我们是否可以只使用numpy函数创建矩阵<code>B</code>。数组<code>B</code>应该有片:</p> <pre class="lang-py prettyprint-override"><code>print(B[0]) [[1. 0. 0.] [0. 1. 0.] [0. 0. 1.]] print(B[1]) [[1. 0. 0.] [0. 1. 0.] [0. 0. 1.]] print(B[2]) [[1. 0. 0.] [0. 1. 0.] [0. 0. 1.]] print(B[3]) [[2. 0. 0.] [0. 2. 0.] [0. 0. 2.]] </code></pre> <p>等等。你知道吗</p> <p>有没有办法用纯numpy解决方案从<code>A</code>生成<code>B</code>?你知道吗</p> <h2>我试过的</h2> <p>下面给出了所需的<code>B</code>,但当<code>m</code>变大时,它就变得单调乏味了:</p> <pre class="lang-py prettyprint-override"><code># vstack solution B = np.vstack((A[::m], A[1::m], A[2::m], A[3::m], A[4::m])) </code></pre> <p>使用列表理解也可以,但我希望避免使用循环:</p> <pre class="lang-py prettyprint-override"><code># List comprehension solution B = np.vstack([A[i::m] for i in range(m)]) </code></pre>
0 条评论
分类:
Python问答
请先
登录
后评论
默认排序
时间排序
1 个回答
匿名
1天前
擅长:python、mysql、java
<p>如果我明白了,也许你可以用<a href="https://docs.scipy.org/doc/numpy-1.15.0/reference/generated/numpy.sort.html" rel="nofollow noreferrer">^{<cd1>}</a>:</p> <pre><code>B = np.sort(A, axis = 0) </code></pre>
请先
登录
后评论
针对此问题:
更多的回答
关注
89
关注
收藏
1
收藏,
216
浏览
网友 提问于 2天前
相关Python问题
如何在乒乓球比赛中预测球的轨迹,对于AI球拍预测?
6 回答
如何在乒乓球游戏中阻止球
4 回答
如何在乘法和模中不乘空间?
2 回答
如何在乘法和除以2个不同的数字之间进行交换?
8 回答
如何在也是数据一部分的单个字符上拆分大字符串
7 回答
如何在乾草堆中找到針,有更好的解決方案嗎?
8 回答
如何在事件wxWidgets中传递自定义数据
10 回答
如何在事件中使用lambda i=i?
8 回答
如何在事件中心只接收最近的数据
10 回答
如何在事件发生之前保持云函数运行?
6 回答
如何在事件发生后使页面重定向到同一页面
2 回答
如何在事件回调之间保持python生成器的状态
2 回答
如何在事件处理程序(pythonsocket、sphinx)中保留docstring
1 回答
如何在事件处理程序中更改wxRichTextCtrl的光标位置?
4 回答
如何在事件处理程序中访问外部对象?
9 回答
如何在事件循环中将协程打包为正常函数?
5 回答
如何在事件循环之外运行协同程序?
2 回答
如何在事件循环结束时为并发未来的所有线程调用类方法?
1 回答
如何在事件文件中只保留一份摘要?
2 回答
如何在事件模板中添加事件
4 回答