gpt4 book ai didi

Python + 二维数组切片 + valueerror : operands could not be broadcast together

转载 作者:行者123 更新时间:2023-12-01 04:53:29 26 4
gpt4 key购买 nike

这让我有点恼火......

我有以下信息:

 1. a 1-D array of longitudes
2. a 1-D array of latitudues
3. a 2-D array of some quantity (sized len(lat),len(long))

我想要做的是根据一系列纬度和经度获取数组的子集

我尝试过这样的事情

ii = find( (lon >= xlims[0]) & (lon <= xlims[1]) )
jj = find( (lat >= ylims[0]) & (lat <= ylims[1]) )
z=array[jj, ii]

ValueError: shape mismatch: objects cannot be broadcast to a single shape

I have tried this using a boolean approach

ii = ( (lon >= xlims[0]) & (lon <= xlims[1]) )
jj = ( (lat >= ylims[0]) & (lat <= ylims[1]) )

但得到同样的错误。

这里可能有一些微妙的东西我错过了......有什么想法吗?

最佳答案

我不知道你的 find 函数是做什么的,但你可以使用 np.ix_ 。首先让我们制作一些虚拟数据:

>>> lon = np.arange(10)
>>> lat = np.linspace(40,50,17)
>>> quant = np.random.random((len(lon),len(lat)))
>>> ii = (lon >= 2) & (lon < 5)
>>> jj = (lat >= 42) & (lat <= 44)

这给了我(对于这个数据)

>>> ii
array([False, False, True, True, True, False, False, False, False, False], dtype=bool)
>>> jj
array([False, False, False, False, True, True, True, False, False,
False, False, False, False, False, False, False, False], dtype=bool)

当我们将其输入np.ix_时,我们得到了一些可以用来索引的东西:

>>> np.ix_(ii,jj)
(array([[2],
[3],
[4]]), array([[4, 5, 6]]))

等等

>>> quant[np.ix_(ii,jj)]
array([[ 0.51567424, 0.84138194, 0.6267137 ],
[ 0.1865154 , 0.7785198 , 0.16720573],
[ 0.80563691, 0.82990892, 0.28402503]])

关于Python + 二维数组切片 + valueerror : operands could not be broadcast together,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27950129/

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