gpt4 book ai didi

python - 尝试按 block 对数组求和时出错

转载 作者:太空宇宙 更新时间:2023-11-03 15:15:18 24 4
gpt4 key购买 nike

我有一个存储在 numpy 数组中的大型数据集 (A) 我正在尝试按 block 的使用求和:

B=numpy.add.reduceat(numpy.add.reduceat(A, numpy.arange(0, A.shape[0], n),axis=0), numpy.arange(0, A .shape[1], n), axis=1)

当我在测试阵列上尝试它时,它工作正常,但使用我的数据时,我收到以下消息:

TypeError:无法根据规则“安全”将数组数据从 dtype('float64') 转换为 dtype('int32')

现在有人知道如何处理吗?

感谢您的帮助。

最佳答案

我相信您遇到的问题是因为您的 block 大小 n 是 float 而不是整数:

>>> A = np.arange(10)

# float block size
>>> np.add.reduceat(A, np.arange(0, A.shape[0], 5.0), axis=0)
# TypeError: Cannot cast array data from dtype('float64') to dtype('int64')
# according to the rule 'safe'

# integer block size
>>> np.add.reduceat(A, np.arange(0, A.shape[0], 5), axis=0)
# array([10, 35])

numpy.add.reduceat 需要整数索引数组,但 numpy.arange(0, A.shape[0], 5.0) 返回 float64 数组值(value)观。

关于python - 尝试按 block 对数组求和时出错,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21640028/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com