【发布时间】:2022-09-19 23:24:48
【问题描述】:
我正在尝试计算 ndarray (1x119) 的 z 分数并将结果放入一个新的中。但是我得到了“具有多个元素的数组的真值是不明确的”错误。
这是代码:
data = loadmat(\'data.mat\') // return us a dict
ts_1 = data[\'exp1\']
ts_2 = data[\'exp2\']
ts_all = np.concatenate(ts_1,ts_2, axis=1)
ts_all = np.array(ts_all) // useless?
ts_all_z = np.zeros(ts_all.shape)
for i in range(ts_all.shape[1]):
ts_all_z[:,i] = stats.zscore(ts_all[:,i]) // error
我不明白,因为我没有做任何布尔比较......是吗?
当用 np.info 查看 ts_all 时,我们得到:
类:ndarray 形状: (1, 119) 步幅:(952, 8) 物品尺寸:8 对齐:真 连续:真 正则表达式:真 数据指针:0x13b243030 字节序:很少 字节交换:假 类型:对象 没有任何
此外, ts_1 和 2 分别是形状为 (1,22) 和 (1,24) 的 ndarray,步幅均为 (8,8)。
我认为连接没有正确完成?或者通过 ts_all 的迭代不应该用 .shape ...完成?
提前致谢。
-
只需复制和粘贴您的代码,并为
ts_all生成形状为(1,119)的随机数组,代码就可以正常运行。ts_all的实际形状是什么? -
感谢您的回答,我在原始问题中添加了更多细节,我认为您帮助我推进了@t.o。我相信我没有正确地进行连接......
-
请阅读minimal reproducible example。示例代码没有用,因为我们没有
data.mat文件。请尝试制作文件的副本,并减少数据,直到您有一个导致问题的小示例输入;然后在示例代码中对该输入进行硬编码。另外,请显示complete 错误消息 - 通过复制和粘贴,从Traceback (most recent call last):行开始,并将其格式化为多行代码。 -
感谢大家的帮助,我知道问题出在哪里!我正在尝试计算 nd 数组的 z 分数,但每个元素的大小都不相同!基本上通过制作一个数组让我们说 np.array([6, 7, 7, 12, 13, 13, 15, 16, 19, 22]) 可以计算 z 分数,但如果现在数组是 p .array([[6, 7, 7], [12, 13, 13, 15]]) 它不再起作用了!所以我会再次调查,非常感谢!我将首先尝试根据每个元素的均值和标准对每个元素进行 z 评分,然后进行连接,这应该可以工作,但我不确定这是否也是我想要的...;P
-
@CastroPablo 很高兴听到您发现问题!如果您不介意将解决方案发布为这个问题的答案,它可以帮助将来有类似串联问题的人
标签: python arrays scipy boolean z-score