【发布时间】:2021-12-09 17:57:27
【问题描述】:
所以。我正在尝试访问和修改一系列 Numpy 数组的倒数第二个元素。
array_1D = np.array([10,11,12,13, 14])
array_2D = np.array([[20,30,40,50,60], [43,54,65,76,87], [11,22,33,44,55]])
array_3D = np.array([[[1,2,3,4,5], [11,21,31,41,51]], [[11,12,13,14,15], [51,52,53,54,5]]])
arrays = [array_1D, array_2D, array_3D]
我想通过编程而不是手动来完成这项工作,以便更深入地学习。
我拥有的是:
for array in arrays:
print(array) # Before
print('CHANGE TEN')
array[..., -2] = 10
print(array, end='\n--------\n\n') # After
返回:
[10 11 12 13 14]
CHANGE TEN
[10 11 12 10 14]
--------
[[20 30 40 50 60]
[43 54 65 76 87]
[11 22 33 44 55]]
CHANGE TEN
[[20 30 40 10 60]
[43 54 65 10 87]
[11 22 33 10 55]]
--------
[[[ 1 2 3 4 5]
[11 21 31 41 51]]
[[11 12 13 14 15]
[51 52 53 54 5]]]
CHANGE TEN
[[[ 1 2 3 10 5]
[11 21 31 10 51]]
[[11 12 13 10 15]
[51 52 53 10 5]]]
--------
如您所见,此语法当前访问沿主轴的所有元素的倒数第二个单个元素。
是否有一种简洁的方法可以访问任意维度数组的倒数第二个单个元素? (在这种情况下,这意味着一个整数。)
我知道奇怪的应用程序。我有兴趣了解与使用任意维度数组密切相关的限制。
(我用谷歌搜索了一下,没有用。谷歌福显然不强。)
【问题讨论】:
-
搜索失败的原因是这不是一个常见的任务,甚至是一个罕见的任务。这是独一无二的。
-
penultimate individual element有点模糊。您是否将阵列想象成一个平面的一维阵列?arr.ravel()[-2]? -
@hpaulj 哦,太好了!好的,所以这不是我试图拼凑的各个部分的规定用途,这很令人欣慰。谢谢!关于我使用的术语,我的意思是对比数组的元素(用于数组各个“级别”的通用元素的术语)和单个元素(存储在任何给定“底部”的实际数据单元)路径”,它终止了可能的搜索深度。所以整数、浮点数、字符串等)。为混乱道歉。这不是这些元素的通用术语吗?如果不是,它们通常是如何被提及的?
-
@hpaulj 刚刚记得你问我是否将数组想象为一维数组。是的!这正是我的想法。
-
刚刚检查了 .ravel() 上的文档。这正是我想要的。你是冠军。如果您想将其作为答案,我会将其标记为正确的解决方案
标签: python arrays numpy dimensions matrix-indexing