gpt4 book ai didi

python - 如何删除子数组的末尾元素?

转载 作者:行者123 更新时间:2023-12-04 09:35:26 24 4
gpt4 key购买 nike

所以我创建了一个 numpy 数组:

import numpy as np

a = np.array([[1,2,3],[4,5,6],[7,8,9]])
我正在尝试删除此数组子数组的结尾元素:
a[0] = (a[0])[:-1]
并遇到这个问题:
a[0] = (a[0])[:-1]
ValueError:无法将输入数组从形状 (2) 广播到形状 (3)
为什么我不能改变它?
我该怎么做?

最佳答案

鉴于:

>>> a
array([[1, 2, 3],
[4, 5, 6],
[7, 8, 9]])
你可以做:
>>> a[:,0:2]
array([[1, 2],
[4, 5],
[7, 8]])
或者:
>>> np.delete(a,2,1)
array([[1, 2],
[4, 5],
[7, 8]])
然后在任何一种情况下,将其分配回 a因为结果是一个新数组。
所以:
>>> a=a[:,0:2]
>>> a
array([[1, 2],
[4, 5],
[7, 8]])
如果您只想删除 3在第一行,这是一个不同的问题。如果你有一个 python 列表数组,你只能这样做,因为子列表的长度不同。
例子:
>>> a = np.array([[1,2],[4,5,6],[7,8,9]])
>>> a
array([list([1, 2]), list([4, 5, 6]), list([7, 8, 9])], dtype=object)
如果你这样做,就坚持使用 Python。您将失去 Numpy 的所有速度和其他优势。

如果“通用”是指 N x M 数组每行的最后一个元素,只需使用 .shape找到尺寸:
>>> a
array([[ 1, 2, 3, 4],
[ 5, 6, 7, 8],
[ 9, 10, 11, 12]])
>>> a.shape
(3, 4)
>>> np.delete(a,a.shape[1]-1,1)
array([[ 1, 2, 3],
[ 5, 6, 7],
[ 9, 10, 11]])
或者,
>>> a[:,0:a.shape[1]-1]
array([[ 1, 2, 3],
[ 5, 6, 7],
[ 9, 10, 11]])

关于python - 如何删除子数组的末尾元素?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62616806/

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