22

I am trying to run threw this Tutorial http://emmanuelle.github.io/segmentation-of-3-d-tomography-images-with-python-and-scikit-image.html

where I want to do a Segmentation of 3-D tomography images with Python.

I'm struggling directly in the beginning, with reshaping the image.

This is the code:

%matplotlib inline

import numpy as np

import matplotlib.pyplot as plt 

import time as time 

data = np.fromfile('/data/data_l67/dalladas/Python3/Daten/Al8Cu_1000_g13_t4_200_250.vol', dtype=np.float32)

data.shape

(60940800,)

data.reshape((50,1104,104))

--------------------------------------------------------------------------- ValueError Traceback (most recent call last) in () ----> 1 data.reshape((50,1104,104))

ValueError: cannot reshape array of size 30470400 into shape (50,1104,104)

Can somebody help me out?

Miriam Farber
  • 18,986
  • 14
  • 61
  • 76
Bananaboy99
  • 231
  • 1
  • 2
  • 4
  • 4
    Try `a.reshape(50, 1104, -1) ` which will figure out 3rd dim automagically – sagarr Mar 22 '17 at 09:28
  • [code to find the all possible reshape values for the given image shape.](https://stackoverflow.com/a/73225425/14896907) – mahesh s Aug 03 '22 at 17:31

3 Answers3

25

It seems that there is a typo, since 1104*1104*50=60940800 and you are trying to reshape to dimensions 50,1104,104. So it seems that you need to change 104 to 1104.

Miriam Farber
  • 18,986
  • 14
  • 61
  • 76
12

In Matrix terms, the number of elements always has to equal the product of the number of rows and columns. In this particular case, the condition is not matching.

Christopher Nuccio
  • 596
  • 1
  • 9
  • 21
NSVR
  • 192
  • 1
  • 2
  • 12
9
data.reshape((50,1104,-1))

works for me

Sᴀᴍ Onᴇᴌᴀ
  • 8,218
  • 8
  • 36
  • 58
mosess
  • 1,043
  • 8
  • 8