从 2d numpy 数组创建 3d numpy 数组
create a 3d numpy array from a 2d numpy array
我有一个二维 numpy 数组:arr= np.array([[2,5,10],[6,2,9]])
。现在我想将其转换为 3d numpy 数组,因为我将在 z 轴或第 3 维方向放置相同数量的 1,在那个位置替换元素。例如,代替 2,我们将放置两个 1,所有其他元素将为零。所以我放置了两个 1 和八个 0,因为矩阵的大小为 2*3*10.
可能吗?如果是,我们如何实现?
这可能就是您要问的...
使用numpy.reshape。这需要数组并像这样重塑它:
数组 = numpy.array([[1,4,1], [3, 1, 4]])
numpy.reshape(数组, (array.shape[0], array.shape[1], 1).
数组现在是 numpy.array([[[1,4,1], [3, 1, 4]]])
末尾的 1 基本上是为数组添加一个额外的维度。形状只是指 X-Y-Z 的长度,无论尺寸大小...
请参阅 https://docs.scipy.org/doc/numpy/reference/generated/numpy.reshape.html 处的重塑 numpy 文档。
希望我有所帮助!
你可以尝试这样的事情:
arr3d= np.zeros((arr.shape[0] , arr.shape[1], max(map(max, arr))))
for i in range(arr.shape[0]):
for j in range(arr.shape[1]):
print(i,j,arr[i][j])
for k in range(arr[i][j]):
arr3d[i,j,k]=1
我知道 3 个循环:\
根据@hpaulj 的建议编辑
像这样使用广播:
>>> x = np.array([[2,5,10],[6,2,9]])
>>>
>>> (x[..., None] > np.arange(10)).view('i1')
array([[[1, 1, 0, 0, 0, 0, 0, 0, 0, 0],
[1, 1, 1, 1, 1, 0, 0, 0, 0, 0],
[1, 1, 1, 1, 1, 1, 1, 1, 1, 1]],
[[1, 1, 1, 1, 1, 1, 0, 0, 0, 0],
[1, 1, 0, 0, 0, 0, 0, 0, 0, 0],
[1, 1, 1, 1, 1, 1, 1, 1, 1, 0]]], dtype=int8)
我有一个二维 numpy 数组:arr= np.array([[2,5,10],[6,2,9]])
。现在我想将其转换为 3d numpy 数组,因为我将在 z 轴或第 3 维方向放置相同数量的 1,在那个位置替换元素。例如,代替 2,我们将放置两个 1,所有其他元素将为零。所以我放置了两个 1 和八个 0,因为矩阵的大小为 2*3*10.
可能吗?如果是,我们如何实现?
这可能就是您要问的...
使用numpy.reshape。这需要数组并像这样重塑它:
数组 = numpy.array([[1,4,1], [3, 1, 4]]) numpy.reshape(数组, (array.shape[0], array.shape[1], 1).
数组现在是 numpy.array([[[1,4,1], [3, 1, 4]]])
末尾的 1 基本上是为数组添加一个额外的维度。形状只是指 X-Y-Z 的长度,无论尺寸大小...
请参阅 https://docs.scipy.org/doc/numpy/reference/generated/numpy.reshape.html 处的重塑 numpy 文档。
希望我有所帮助!
你可以尝试这样的事情:
arr3d= np.zeros((arr.shape[0] , arr.shape[1], max(map(max, arr))))
for i in range(arr.shape[0]):
for j in range(arr.shape[1]):
print(i,j,arr[i][j])
for k in range(arr[i][j]):
arr3d[i,j,k]=1
我知道 3 个循环:\
根据@hpaulj 的建议编辑
像这样使用广播:
>>> x = np.array([[2,5,10],[6,2,9]])
>>>
>>> (x[..., None] > np.arange(10)).view('i1')
array([[[1, 1, 0, 0, 0, 0, 0, 0, 0, 0],
[1, 1, 1, 1, 1, 0, 0, 0, 0, 0],
[1, 1, 1, 1, 1, 1, 1, 1, 1, 1]],
[[1, 1, 1, 1, 1, 1, 0, 0, 0, 0],
[1, 1, 0, 0, 0, 0, 0, 0, 0, 0],
[1, 1, 1, 1, 1, 1, 1, 1, 1, 0]]], dtype=int8)