python - 如何获取numpy数组所有可能的数组属性?

标签 python arrays numpy

  • Python:获取 nd 数组的所有可能的数组属性。使用 itertools.product
    • 如果是,怎么做?
  • 在 Python 中,我有两个 n 维 numpy 数组 AB (B 是一个零数组)。
  • 这样的方式A.shape[i]<=B.shape[i] ,对于 0 之间的任何 i和 n . 我想以这种方式创建一个 for 循环,每次迭代我都认为是 AB 的不同子集, 这样每一个可能的位置都被占用直到 for 循环结束。

例如,A = np.array([[1,1,1],[1,1,1]])B = np.zeros((3,4)) ,我会得到这些(每次迭代其中一个):

1 1 1 0       0 1 1 1       0 0 0 0      0 0 0 0
1 1 1 0       0 1 1 1       1 1 1 0      0 1 1 1
0 0 0 0       0 0 0 0       1 1 1 0      0 1 1 1

对于一个固定的n维度是微不足道的,只需为每个维度使用嵌套的循环。 但是,我想要一个通用的 n维度。

我的方法是使用 itertools.product获取索引的所有组合。 在上面的示例中,product([0,1],[0,1]) , 将遍历 (0,0),(0,1),(1,0),(1,1) ,我会有我的索引。 但是,我不知道如何将参数值传递给通用 n 的乘积函数。 . 任何的想法?有更好的方法吗?

最佳答案

itertools 产品应该可以工作。

import numpy as np
from itertools import product

A = np.ones((2,3))
B = np.zeros((3,4))

r_rng = range(B.shape[0]-A.shape[0]+1)
c_rng = range(B.shape[1]-A.shape[1]+1)

for i,j in product(r_rng, c_rng):
    C = B.copy()
    C[i:i+A.shape[0],j:j+A.shape[1]]=A
    print(C,'\n')

输出:

[[1. 1. 1. 0.]
 [1. 1. 1. 0.]
 [0. 0. 0. 0.]]

[[0. 1. 1. 1.]
 [0. 1. 1. 1.]
 [0. 0. 0. 0.]]

[[0. 0. 0. 0.]
 [1. 1. 1. 0.]
 [1. 1. 1. 0.]]

[[0. 0. 0. 0.]
 [0. 1. 1. 1.]
 [0. 1. 1. 1.]]

关于python - 如何获取numpy数组所有可能的数组属性?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62615758/

相关文章:

python - Scrapy,使用不同的 XPathSelector 进行递归爬行

Python 交替引用新实例

c - 如何分配和调整int***数组的内存大小?

arrays - 将列末尾的元素与下一行开头的元素相加

python - 使用 pandas 查找从特定范围内的单元格中删除 '!' 的代码

python - 如何查找列表中给定值的所有下限值和上限值

python - 使用 F2PY 的可调节 Fortran 数组

python - 使用 python/BeautifulSoup 将 HTML 标记对替换为不同的标记对

python - 导入错误 : No module named FileDialog - after PyInstaller

jquery - 使用 AJAX 将 JSON 数据传递到 Flask 服务器?