通过添加新索引值重塑 python 中的 numpy 数组
Reshape numpy array in python with adding a new index value
我不太熟悉 python 这种转换,但我需要帮助来转换一个 1D numpy 形状数组,例如。 (17000) 以这种方式转换为二维 numpy 数组 (17000, 2),我们将拥有这样的结构
1D array (value1, value2, value3, ..., value17000)
2D array ((1, value1), (2, value2), (3, value3), ... (17000, value17000))
所以简而言之,添加一个新行,该行将具有来自特定顺序的多个索引)。
有没有什么有效的方法可以在不编写代码的情况下执行此转换,该代码将遍历所有值并复制它,但也许可以在单行转换中完成?
result = np.column_stack((np.arange(1, len(some_np_array) + 1), some_np_array))
编辑: 我删除了之前的回答,因为直到现在我才知道 np.column_stack
。如需进一步说明,您可能需要参考 Converting two lists into a matrix
你的第二个问题可能有更好的解决方案,但这是一个:
import functools
import numpy as np
def append_idx(arr, some_iter):
return np.column_stack((np.fromiter(some_iter, dtype=np.int_, count=len(arr)), arr))
some_iter = iter(np.arange(1, functools.reduce(lambda x, y: x*y, some_np_array.shape) + 1))
result = np.apply_along_axis(lambda x: append_idx(x, some_iter), axis=-1, arr=some_np_array)
我不太熟悉 python 这种转换,但我需要帮助来转换一个 1D numpy 形状数组,例如。 (17000) 以这种方式转换为二维 numpy 数组 (17000, 2),我们将拥有这样的结构
1D array (value1, value2, value3, ..., value17000)
2D array ((1, value1), (2, value2), (3, value3), ... (17000, value17000))
所以简而言之,添加一个新行,该行将具有来自特定顺序的多个索引)。 有没有什么有效的方法可以在不编写代码的情况下执行此转换,该代码将遍历所有值并复制它,但也许可以在单行转换中完成?
result = np.column_stack((np.arange(1, len(some_np_array) + 1), some_np_array))
编辑: 我删除了之前的回答,因为直到现在我才知道 np.column_stack
。如需进一步说明,您可能需要参考 Converting two lists into a matrix
你的第二个问题可能有更好的解决方案,但这是一个:
import functools
import numpy as np
def append_idx(arr, some_iter):
return np.column_stack((np.fromiter(some_iter, dtype=np.int_, count=len(arr)), arr))
some_iter = iter(np.arange(1, functools.reduce(lambda x, y: x*y, some_np_array.shape) + 1))
result = np.apply_along_axis(lambda x: append_idx(x, some_iter), axis=-1, arr=some_np_array)