gpt4 book ai didi

python - 如何从 NumPy 数组中按行选择元素?

转载 作者:太空狗 更新时间:2023-10-29 17:40:31 27 4
gpt4 key购买 nike

我有一个像这样的 numpy 数组

dd= [[foo 0.567 0.611]
[bar 0.469 0.479]
[noo 0.220 0.269]
[tar 0.480 0.508]
[boo 0.324 0.324]]

如何遍历数组选择 foo 并获得 0.567 0.611 作为单例 float 。然后选择 bar 并得到 0.469 0.479 as floats 作为单例.....

我可以使用

将第一个元素作为列表获取向量
dv=  dd[:,1]

“foo”和“bar”元素不是未知变量,它们可以改变。

如果元素在位置 [1],我将如何更改?

[[0.567 foo2 0.611]
[0.469 bar2 0.479]
[0.220 noo2 0.269]
[0.480 tar2 0.508]
[0.324 boo2 0.324]]

最佳答案

你已经在你的问题上放置了 NumPy 标签,所以我假设你想要 NumPy 语法,而我之前的答案没有使用它。

如果您实际上希望使用 NumPy,那么您可能不需要数组中的字符串,否则您还必须将 float 表示为字符串。

您正在寻找的是用于按行访问二维数组元素(并排除第一列)的 NumPy 语法

语法是:

M[row_index,1:]        # selects all but 1st col from row given by 'row_index'

W/r/t 您问题中的第二个场景——选择不相邻的列:

M[row_index,[0,2]]     # selects 1st & 3rd cols from row given by 'row_index'


你的问题中的小问题只是你想为 row_index 使用一个字符串,所以有必要删除字符串(这样你就可以创建一个 2D NumPy float 组),用数字行替换它们索引,然后创建一个查找表以将字符串与数字行索引映射:

>>> import numpy as NP
>>> # create a look-up table so you can remove the strings from your python nested list,
>>> # which will allow you to represent your data as a 2D NumPy array with dtype=float
>>> keys
['foo', 'bar', 'noo', 'tar', 'boo']
>>> values # 1D index array comprised of one float value for each unique string in 'keys'
array([0., 1., 2., 3., 4.])
>>> LuT = dict(zip(keys, values))

>>> # add an index to data by inserting 'values' array as first column of the data matrix
>>> A = NP.hstack((vals, A))
>>> A
NP.array([ [ 0., .567, .611],
[ 1., .469, .479],
[ 2., .22, .269],
[ 3., .48, .508],
[ 4., .324, .324] ])

>>> # so now to look up an item, by 'key':
>>> # write a small function to perform the look-ups:
>>> def select_row(key):
return A[LuT[key],1:]

>>> select_row('foo')
array([ 0.567, 0.611])

>>> select_row('noo')
array([ 0.22 , 0.269])

您问题中的第二种情况:如果索引列发生变化怎么办?

>>> # e.g., move index to column 1 (as in your Q)
>>> A = NP.roll(A, 1, axis=1)
>>> A
array([[ 0.611, 1. , 0.567],
[ 0.479, 2. , 0.469],
[ 0.269, 3. , 0.22 ],
[ 0.508, 4. , 0.48 ],
[ 0.324, 5. , 0.324]])

>>> # the original function is changed slightly, to select non-adjacent columns:
>>> def select_row2(key):
return A[LuT[key],[0,2]]

>>> select_row2('foo')
array([ 0.611, 0.567])

关于python - 如何从 NumPy 数组中按行选择元素?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7543250/

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