广播广播对齐问题

问题描述

当使用由外部库(lhsmdu 1.1)和numpy 1.18.1生成的数据时,我很难理解广播操作中的错误。

我用它来生成一个(10,5)np.ndarray,然后用几个(5,)np.ndarrays进行缩放。但是,即使该操作中所有数组的形状似乎都可以广播,但我仍然得到:

ValueError: shapes (10,5) and (1,5) not aligned: 5 (dim 1) != 1 (dim 0)

我做了一些测试以试图理解这一点,因为目前我真的不知道:

import numpy as np
import lhsmdu

ub = 2.0 * np.ones(5)
lb = 0.5 * np.ones(5)
k = lhsmdu.sample(ub.size,10)
try:
    z = k.T * (ub - lb) + lb
except ValueError:
    print("failed original problem")

# 1 - numpy copy
a = np.copy(k)
try:
    z = a.T * (ub - lb) + lb
except ValueError:
    print("failed test 1")

# 2 - just copy shape
b = np.ones_like(k)
try:
    z = b.T * (ub - lb) + lb
except ValueError:
    print("failed test 2")

# 3 - copy shape and values
c = np.empty(k.shape)
for ix in range(0,k.shape[0]):
    for iy in range(0,k.shape[1]):
        c[ix,iy] = k[ix,iy]
try:
    z = c.T * (ub - lb) + lb
except ValueError:
    print("failed test 3")

# 4 - deepcopy
import copy
d = copy.deepcopy(k)
try:
    z = d.T * (ub - lb) + lb
except ValueError:
    print("failed test 4")

哪个输出:

failed original problem
failed test 2
failed test 4

我在这里错过了什么琐碎的事情?

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)