numpy.delete 没有从数组中删除列
numpy.delete not removing column from array
我试图一次从数组中删除每一列,并且根据文档和 this question,我认为以下应该可行:
print(all_input_data.shape)
for n in range(9):
print(n)
testArray = all_input_data.copy()
print(testArray.shape)
np.delete(testArray,[n],axis=1)
print(testArray.shape)
print(testArray[0:1][:])
原矩阵为all_input_data.
这不会导致删除任何列或对数组产生任何其他更改。上面代码片段的初始输出是:
(682120, 9)
0
(682120, 9)
(682120, 9)
[[ 2.37000000e+02 1.60000000e+01 9.90000000e+01 1.04910000e+03
9.29000000e-01 9.86000000e-01 8.43000000e-01 4.99290000e+01
1.97000000e+00]]
删除命令根本没有改变矩阵的形状。
np.delete
returns 删除了元素的输入数组的副本。
Return a new array with sub-arrays along an axis deleted.
numpy中没有数组元素的原位删除。
因为np.delete
returns复制了并且不修改输入所以不需要手动复制all_input_data
:
import numpy as np
all_input_data = np.random.rand(100, 9)
for n in range(9):
print(n)
testArray = np.delete(all_input_data,[n],axis=1)
print(testArray.shape)
print(testArray[0:1][:])
从链接问题考虑:
In [2]: a = np.arange(12).reshape(3,4)
In [3]: np.delete(a, [1,3], axis=1)
Out[3]:
array([[ 0, 2],
[ 4, 6],
[ 8, 10]])
In [4]: a
Out[4]:
array([[ 0, 1, 2, 3],
[ 4, 5, 6, 7],
[ 8, 9, 10, 11]])
换句话说,如果您想保存更改,您应该保存到一个新变量,但考虑到矩阵的大小,这不切实际。您可以做的是使用 切片符号 索引。解释 .
我试图一次从数组中删除每一列,并且根据文档和 this question,我认为以下应该可行:
print(all_input_data.shape)
for n in range(9):
print(n)
testArray = all_input_data.copy()
print(testArray.shape)
np.delete(testArray,[n],axis=1)
print(testArray.shape)
print(testArray[0:1][:])
原矩阵为all_input_data.
这不会导致删除任何列或对数组产生任何其他更改。上面代码片段的初始输出是:
(682120, 9)
0
(682120, 9)
(682120, 9)
[[ 2.37000000e+02 1.60000000e+01 9.90000000e+01 1.04910000e+03
9.29000000e-01 9.86000000e-01 8.43000000e-01 4.99290000e+01
1.97000000e+00]]
删除命令根本没有改变矩阵的形状。
np.delete
returns 删除了元素的输入数组的副本。
Return a new array with sub-arrays along an axis deleted.
numpy中没有数组元素的原位删除。
因为np.delete
returns复制了并且不修改输入所以不需要手动复制all_input_data
:
import numpy as np
all_input_data = np.random.rand(100, 9)
for n in range(9):
print(n)
testArray = np.delete(all_input_data,[n],axis=1)
print(testArray.shape)
print(testArray[0:1][:])
从链接问题考虑:
In [2]: a = np.arange(12).reshape(3,4)
In [3]: np.delete(a, [1,3], axis=1)
Out[3]:
array([[ 0, 2],
[ 4, 6],
[ 8, 10]])
In [4]: a
Out[4]:
array([[ 0, 1, 2, 3],
[ 4, 5, 6, 7],
[ 8, 9, 10, 11]])
换句话说,如果您想保存更改,您应该保存到一个新变量,但考虑到矩阵的大小,这不切实际。您可以做的是使用 切片符号 索引。解释