3 回答

TA貢獻(xiàn)1804條經(jīng)驗(yàn) 獲得超2個(gè)贊
鑒于:
>>> 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因?yàn)榻Y(jié)果是一個(gè)新數(shù)組。
所以:
>>> a=a[:,0:2]
>>> a
array([[1, 2],
[4, 5],
[7, 8]])
如果您只想刪除3第一行,那就是另一個(gè)問(wèn)題了。如果你有一個(gè) python 列表數(shù)組,你只能這樣做,因?yàn)樽恿斜淼拈L(zhǎng)度不同。
例子:
>>> 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)
如果你這樣做,就堅(jiān)持使用 Python。您將失去 Numpy 的所有速度和其他優(yōu)勢(shì)。
如果“通用”是指 N x M 數(shù)組每一行的最后一個(gè)元素,只需使用它.shape來(lái)查找維度:
>>> 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]])

TA貢獻(xiàn)1831條經(jīng)驗(yàn) 獲得超9個(gè)贊
>>> a = np.array([[1,2,3],[4,5,6],[7,8,9]])
>>> a
array([[1, 2, 3],
[4, 5, 6],
[7, 8, 9]])
>>> type(a)
<class 'numpy.ndarray'>
>>> a.shape
(3, 3)
變量a是矩陣(二維數(shù)組)。它有一定數(shù)量的行和列。在矩陣中,所有行的長(zhǎng)度必須相同。因此,在上面的示例中,如果第一行的長(zhǎng)度為 2,其他行的長(zhǎng)度為 3,則無(wú)法形成矩陣。因此,僅刪除第一個(gè)(或任何其他子集)子數(shù)組的最后一個(gè)元素是不可能的。
相反,您必須同時(shí)刪除所有子數(shù)組的最后一個(gè)元素。
可以這樣做
>>> a[:,0:2]
array([[1, 2],
[4, 5],
[7, 8]])
或者,
>>> np.delete(a,2,1)
array([[1, 2],
[4, 5],
[7, 8]])
這也適用于其他位置的元素??梢詣h除子數(shù)組的任何元素,記住所有子數(shù)組應(yīng)該具有相同的長(zhǎng)度。
但是,除非形狀保持不變,否則您可以操作任何子數(shù)組的最后一個(gè)元素(或任何其他元素)。
>>> a[0][-1] = 19
>>> a
array([[ 1, 2, 19],
[ 4, 5, 6],
[ 7, 8, 9]])
如果您嘗試形成一個(gè)具有不等長(zhǎng)行的矩陣,則會(huì)形成一個(gè)一維列表數(shù)組,在該列表上沒(méi)有任何 Numpy 操作(如矢量處理、切片等)起作用(列表操作起作用)
>>> b = np.array([[1,2,3],[1,2,3]])
>>> c = np.array([[1,2],[1,2,3]])
>>> b
array([[1, 2, 3],
[1, 2, 3]])
>>> b.shape
(2, 3)
>>> c
array([list([1, 2]), list([1, 2, 3])], dtype=object)
>>> c.shape
(2,)
>>> print(type(b),type(c))
<class 'numpy.ndarray'> <class 'numpy.ndarray'>
兩者都是 ndarray,但您可以看到第二個(gè)變量c是一維列表數(shù)組。
>>> b+b
array([[2, 4, 6],
[2, 4, 6]])
>>> c+c
array([list([1, 2, 1, 2]), list([1, 2, 3, 1, 2, 3])], dtype=object)
類似地, operation 執(zhí)行withb+b的逐元素加法,但執(zhí)行兩個(gè)列表之間的連接操作。bbc+c

TA貢獻(xiàn)1796條經(jīng)驗(yàn) 獲得超7個(gè)贊
方法如下:
import numpy as np
a = np.array([[1,2,3],[4,5,6],[7,8,9]])
a = a[:-1]
print(a)
輸出:
[[1 2 3]
[4 5 6]]
添加回答
舉報(bào)