为什么使用 np.ix_ 会出现交叉索引错误

Why getting Cross index error using np.ix_

为什么在使用 np.ix_ 时会出现此错误?

import numpy as np

a = np.arange(1,3).reshape(1,2)
print(a)

k_r = [[1,1],[1,-1]]

r = np.zeros((10,10),int)
r[np.ix_([a],[a])]= k_r

print(r)

错误:

ValueError: Cross index must be 1 dimensional

我想我理解了这个问题。 首先,您应该像这样删除 a 周围的“[]”

r[np.ix_(a,a)]= k_r

似乎 np.ix_(a, a) 想要 a 格式:a = [x, x] 其中 x 是。 您当前的 a 格式为:[[1 2]] 创建 a 的另一种方法是:

a = [i for i in range(1,3)]

如果这不能解决您的问题,您可以查看此页面:https://numpy.org/doc/stable/reference/generated/numpy.ix_.html

错误告诉你交叉索引必须是一维的,但是a = np.arange(1,3).reshape(1,2)创建了一个二维数组。此外,您通过将数组包装在列表中来添加另一个维度(有点,但不是真的),r[np.ix_([a],[a])].

解决这些问题,您将获得:

import numpy as np

a = np.arange(1,3)
print(a)

k_r = [[1,1],[1,-1]]

r = np.zeros((10,10),int)
r[np.ix_(a,a)]= k_r
print(r)