我们从Python开源项目中,提取了以下50个代码示例,用于说明如何使用numpy.swapaxes()。
def _create_feat_arr(self, X, prf_crf_pred): """ Concatenate the original feature vector with the predicition probabilities of a cascade layer. :param X: np.array Array containing the input samples. Must be of shape [n_samples, data] where data is a 1D array. :param prf_crf_pred: list Prediction probabilities by a cascade layer for X. :return: np.array Concatenation of X and the predicted probabilities. To be used for the next layer in a cascade forest. """ swap_pred = np.swapaxes(prf_crf_pred, 0, 1) add_feat = swap_pred.reshape([np.shape(X)[0], -1]) feat_arr = np.concatenate([add_feat, X], axis=1) return feat_arr
def get_image(file_location, local=False): # users can either # [1] upload a picture (local = True) # or # [2] provide the image URL (local = False) if local == True: fname = file_location else: fname = mx.test_utils.download(file_location, dirname="static/img_pool") img = cv2.cvtColor(cv2.imread(fname), cv2.COLOR_BGR2RGB) if img is None: return None # convert into format (batch, RGB, width, height) img = cv2.resize(img, (224, 224)) img = np.swapaxes(img, 0, 2) img = np.swapaxes(img, 1, 2) img = img[np.newaxis, :] return img
def test_rgb2lab_brucelindbloom(self): """ Test the RGB->Lab conversion by comparing to the calculator on the authoritative Bruce Lindbloom [website](http://brucelindbloom.com/index.html?ColorCalculator.html). """ # Obtained with D65 white point, sRGB model and gamma gt_for_colbars = np.array([ [100,0,0], [97.1393, -21.5537, 94.4780], [91.1132, -48.0875, -14.1312], [87.7347, -86.1827, 83.1793], [60.3242, 98.2343, -60.8249], [53.2408, 80.0925, 67.2032], [32.2970, 79.1875, -107.8602], [0,0,0]]).T gt_array = np.swapaxes(gt_for_colbars.reshape(3, 4, 2), 0, 2) assert_array_almost_equal(rgb2lab(self.colbars_array), gt_array, decimal=2)
def test_rgb2luv_brucelindbloom(self): """ Test the RGB->Lab conversion by comparing to the calculator on the authoritative Bruce Lindbloom [website](http://brucelindbloom.com/index.html?ColorCalculator.html). """ # Obtained with D65 white point, sRGB model and gamma gt_for_colbars = np.array([ [100, 0, 0], [97.1393, 7.7056, 106.7866], [91.1132, -70.4773, -15.2042], [87.7347, -83.0776, 107.3985], [60.3242, 84.0714, -108.6834], [53.2408, 175.0151, 37.7564], [32.2970, -9.4054, -130.3423], [0, 0, 0]]).T gt_array = np.swapaxes(gt_for_colbars.reshape(3, 4, 2), 0, 2) assert_array_almost_equal(rgb2luv(self.colbars_array), gt_array, decimal=2)
def _convert(matrix, arr): """Do the color space conversion. Parameters ---------- matrix : array_like The 3x3 matrix to use. arr : array_like The input array. Returns ------- out : ndarray, dtype=float The converted array. """ arr = _prepare_colorarray(arr) arr = np.swapaxes(arr, 0, -1) oldshape = arr.shape arr = np.reshape(arr, (3, -1)) out = np.dot(matrix, arr) out.shape = oldshape out = np.swapaxes(out, -1, 0) return np.ascontiguousarray(out)
def get_data(datadir): #datadir = args.data # assume each image is 512x256 split to left and right imgs = glob.glob(os.path.join(datadir, '*.jpg')) data_X = np.zeros((len(imgs),3,img_cols,img_rows)) data_Y = np.zeros((len(imgs),3,img_cols,img_rows)) i = 0 for file in imgs: img = cv2.imread(file,cv2.IMREAD_COLOR) img = cv2.resize(img, (img_cols*2, img_rows)) #print('{} {},{}'.format(i,np.shape(img)[0],np.shape(img)[1])) img = np.swapaxes(img,0,2) X, Y = split_input(img) data_X[i,:,:,:] = X data_Y[i,:,:,:] = Y i = i+1 return data_X, data_Y
def train(): for i in range(20000): randomint = randint(0, 10000 - batchsize - 1) trainingData = batch["data"][randomint:batchsize + randomint] rawlabel = batch["labels"][randomint:batchsize + randomint] trainingLabel = np.zeros((batchsize, 10)) trainingLabel[np.arange(batchsize), rawlabel] = 1 trainingData = trainingData / 255.0 trainingData = np.reshape(trainingData, [-1, 3, 32, 32]) trainingData = np.swapaxes(trainingData, 1, 3) if i % 10 == 0: train_accuracy = accuracy.eval(feed_dict={ img: validationData, lbl: validationLabel, keepProb: 1.0}) print("step %d, training accuracy %g" % (i, train_accuracy)) if i % 50 == 0: saver.save(sess, os.getcwd() + "/training/train", global_step=i) optimizer.run(feed_dict={img: trainingData, lbl: trainingLabel, keepProb: 0.5}) print(i)
def write_hdf5(file, data, label_class, label_bbox, label_landmarks): # transform to np array data_arr = np.array(data, dtype = np.float32) # print data_arr.shape # if no swapaxes, transpose to num * channel * width * height ??? # data_arr = data_arr.transpose(0, 3, 2, 1) label_class_arr = np.array(label_class, dtype = np.float32) label_bbox_arr = np.array(label_bbox, dtype = np.float32) label_landmarks_arr = np.array(label_landmarks, dtype = np.float32) with h5py.File(file, 'w') as f: f['data'] = data_arr f['label_class'] = label_class_arr f['label_bbox'] = label_bbox_arr f['label_landmarks'] = label_landmarks_arr # list_file format: # image_path | label_class | label_boundingbox(4) | label_landmarks(10)
def setUp(self): self.data = [ # Array scalars (np.array(3.), None), (np.array(3), 'f8'), # 1D arrays (np.arange(6, dtype='f4'), None), (np.arange(6), 'c16'), # 2D C-layout arrays (np.arange(6).reshape(2, 3), None), (np.arange(6).reshape(3, 2), 'i1'), # 2D F-layout arrays (np.arange(6).reshape((2, 3), order='F'), None), (np.arange(6).reshape((3, 2), order='F'), 'i1'), # 3D C-layout arrays (np.arange(24).reshape(2, 3, 4), None), (np.arange(24).reshape(4, 3, 2), 'f4'), # 3D F-layout arrays (np.arange(24).reshape((2, 3, 4), order='F'), None), (np.arange(24).reshape((4, 3, 2), order='F'), 'f4'), # 3D non-C/F-layout arrays (np.arange(24).reshape(2, 3, 4).swapaxes(0, 1), None), (np.arange(24).reshape(4, 3, 2).swapaxes(0, 1), '?'), ]
def eval(self, t_in): """ Evaluate the spline at the points in t_in, which must be an array with values in [0,1] returns and np array with the corresponding points """ t_in = t_in.clip(0.0, 1.0) splines = self.splines tknots = self.tknots index = tknots.searchsorted(t_in, side='left') - 1 index = index.clip(0, len(splines) - 1) to_calc = splines[index] ax, bx, cx, dx, tx = np.swapaxes(to_calc, 0, 1) t_r = t_in[:, np.newaxis] - tx out = ax + t_r * (bx + t_r * (cx + t_r * dx)) return out
def binArray(x, binList, axis=0): """Binarize an array x : array Array to binarize binList : list of tuple/list This list contain the index to binarize the array x axis : int, optional, [def: 0] Binarize along the axis "axis" -> Return the binarize x and the center of each window. """ nbin = len(binList) x = np.swapaxes(x, 0, axis) xBin = np.zeros((nbin,)+x.shape[1::]) for k, i in enumerate(binList): if i[1] - i[0] == 1: xBin[k, ...] = x[i[0], ...] else: xBin[k, ...] = np.mean(x[i[0]:i[1], ...], 0) return np.swapaxes(xBin, 0, axis), [(k[0]+k[1])/2 for k in binList]
def compute_mean(input_list, plot_mean=False): # If no data supplied, use mean supplied with pretrained model if len(input_list) == 0: net_root = '.' net_dir = 'VGG_S_rgb' mean_filename=os.path.join(net_root, net_dir, 'mean.binaryproto') proto_data = open(mean_filename, "rb").read() a = caffe.io.caffe_pb2.BlobProto.FromString(proto_data) mean = caffe.io.blobproto_to_array(a)[0] else: x,y,c = 256,256,3 mean = np.zeros((c, x, y)) for img_file in input_list: img = caffe.io.load_image(img_file) img = mod_dim(img, x, y, c) mean += img mean /= len(input_list) # Plot the mean image if desired: if plot_mean: plt.imshow(np.swapaxes(np.swapaxes(mean, 0, 1), 1, 2)) plt.show() return mean # Return VGG_S_Net from mean image and optional network type
def classify_video_frame(frame, faces, VGG_S_Net, categories=None): # Handle incorrect image dims for uncropped images # TODO: Get uncropped images to import correctly #if frame.shape[0] == 3: # frame = np.swapaxes(np.swapaxes(frame, 0, 1), 1, 2) # Convert to float format: frame = frame.astype(np.float32) frame /= 255.0 labels = [] for x,y,w,h in faces: img = frame[y:y+h,x:x+w,:] # Input image should be WxHxK, e.g. 490x640x3 prediction = VGG_S_Net.predict([img], oversample=False) labels.append(prediction.argmax()) return labels
def predict(url, mod, synsets): req = urllib2.urlopen(url) arr = np.asarray(bytearray(req.read()), dtype=np.uint8) cv2_img = cv2.imdecode(arr, -1) img = cv2.cvtColor(cv2_img, cv2.COLOR_BGR2RGB) if img is None: return None img = cv2.resize(img, (224, 224)) img = np.swapaxes(img, 0, 2) img = np.swapaxes(img, 1, 2) img = img[np.newaxis, :] mod.forward(Batch([mx.nd.array(img)])) prob = mod.get_outputs()[0].asnumpy() prob = np.squeeze(prob) a = np.argsort(prob)[::-1] out = '' for i in a[0:5]: out += 'probability=%f, class=%s' %(prob[i], synsets[i]) out += "\n" return out
def block_sep0(self, Y): r"""Separate variable into component corresponding to :math:`\mathbf{y}_0` in :math:`\mathbf{y}\;\;`. The method from parent class :class:`.ADMMTwoBlockCnstrnt` is overridden here to allow swapping of K (multi-image) and M (filter) axes in block 0 so that it can be concatenated on axis M with block 1. This is necessary because block 0 has the dimensions of S while block 1 has the dimensions of D. Handling of multi-channel signals substantially complicate this issue. There are two multi-channel cases: multi-channel dictionary and signal (Cd = C > 1), and single-channel dictionary with multi-channel signal (Cd = 1, C > 1). In the former case, S and D shapes are (N x C x K x 1) and (N x C x 1 x M) respectively. In the latter case, :meth:`.__init__` has already taken care of combining C (multi-channel) and K (multi-image) axes in S, so the S and D shapes are (N x 1 x C K x 1) and (N x 1 x 1 x M) respectively. """ return np.swapaxes(Y[(slice(None),)*self.blkaxis + (slice(0, self.blkidx),)], self.cri.axisK, self.cri.axisM)
def relax_AX(self): """The parent class method that this method overrides only implements the relaxation step for the variables of the baseline consensus algorithm. This method calls the overridden method and then implements the relaxation step for the additional variables required for the mask decoupling modification to the baseline algorithm. """ super(ConvCnstrMODMaskDcpl_Consensus, self).relax_AX() self.AX1nr = sl.irfftn(sl.inner(self.Zf, self.swapaxes(self.Xf), axis=self.cri.axisM), self.cri.Nv, self.cri.axisN) if self.rlx == 1.0: self.AX1 = self.AX1nr else: alpha = self.rlx self.AX1 = alpha*self.AX1nr + (1-alpha)*(self.Y1 + self.S)
def block_sep1(self, Y): """Separate variable into component corresponding to Y1 in Y.""" Y1 = Y[..., self.cri.M:] # If cri.Cd > 1 (multi-channel dictionary), we need to undo the # reshape performed in block_cat if self.cri.Cd > 1: shp = list(Y1.shape) shp[self.cri.axisM] = self.cri.dimN shp[self.cri.axisC] = self.cri.Cd Y1 = Y1.reshape(shp) # Axes are swapped here for similar reasons to those # motivating swapping in cbpdn.ConvTwoBlockCnstrnt.block_sep0 Y1 = np.swapaxes(Y1[..., np.newaxis], self.cri.axisM, -1) return Y1
def block_cat(self, Y0, Y1): """Concatenate components corresponding to Y0 and Y1 blocks into Y. """ # Axes are swapped here for similar reasons to those # motivating swapping in cbpdn.ConvTwoBlockCnstrnt.block_cat Y1sa = np.swapaxes(Y1, self.cri.axisM, -1)[..., 0] # If cri.Cd > 1 (multi-channel dictionary) Y0 has a singleton # channel axis but Y1 has a non-singleton channel axis. To make # it possible to concatenate Y0 and Y1, we reshape Y1 by a # partial ravel of axisM and axisC onto axisM. if self.cri.Cd > 1: shp = list(Y1sa.shape) shp[self.cri.axisM] *= shp[self.cri.axisC] shp[self.cri.axisC] = 1 Y1sa = Y1sa.reshape(shp) return np.concatenate((Y0, Y1sa), axis=self.cri.axisM)
def block_sep0(self, Y): r"""Separate variable into component corresponding to :math:`\mathbf{y}_0` in :math:`\mathbf{y}\;\;`. The method from parent class :class:`.ADMMTwoBlockCnstrnt` is overridden here to allow swapping of C (channel) and M (filter) axes in block 0 so that it can be concatenated on axis M with block 1. This is necessary because block 0 has the dimensions of S (N x C x K x 1) while block 1 has the dimensions of X (N x 1 x K x M). """ if self.y0swapaxes: return np.swapaxes(Y[(slice(None),)*self.blkaxis + (slice(0, self.blkidx),)], self.cri.axisC, self.cri.axisM) else: return super(ConvTwoBlockCnstrnt, self).block_sep0(Y)
def swap_axis_to_0(x, axis): """Insert a new singleton axis at position 0 and swap it with the specified axis. The resulting array has an additional dimension, with ``axis`` + 1 (which was ``axis`` before the insertion of the new axis) of ``x`` at position 0, and a singleton axis at position ``axis`` + 1. Parameters ---------- x : ndarray Input array axis : int Index of axis in ``x`` to swap to axis index 0. Returns ------- arr : ndarray Output array """ return np.ascontiguousarray(np.swapaxes(x[np.newaxis, ...], 0, axis+1))
def multi_taper_psd(psd_generator): """ Calculates an MTM PSD from the signal. Parameters: psd_generator : see iter_mt() Returns: pxx : NxMxT matrix of power values at each frequency, where T is the number of tapers freqs : vector of size N containing frequency at each index N times : vector of size M containing times corresponding to each index M """ pxx = [] t = [] for spectrum, time in psd_generator: pxx.append(spectrum) t.append(time) pxx = np.swapaxes(np.array(pxx), 0, 1) # freq needs to be first dim return pxx, np.array(t) # --- Multi-taper machinery ---
def open_bytes_simple(self, plane): """\ Obtain the image plane for the given index as a numpy array, or a list of numpy arrays in the RGB case. """ # Fetch 9D array a = self.open_bytes(plane) # Drop all unused dimensions s = np.squeeze(a, axis=(2, 3, 4, 6, 7, 8)) # Swap x,y to y,x s = np.swapaxes(s, 0, 1) # Split RGB samples into separate arrays if s.shape[2] == 1: return np.squeeze(s, axis=2) else: return [s[:, :, i] for i in range(0, s.shape[2])]
def cropImg(img,oriRio=0.24/0.36): #oriImg = cv2.imread(img) #img = np.swapaxes(img,0,2) h = img.shape[0] w = img.shape[1] # from the middle of the long side (the middle two points)to # crop based on the shorter side, then according to the ucf101 # ratio to crop the other side if h <= w * oriRio: crop_ws = w/2-1-int(h/(oriRio*2)) crop_we = w/2+int(h/(oriRio*2)) subImg = img[:,crop_ws:crop_we,:] else: crop_hs = h/2-1-int(w*(oriRio/2)) crop_he = h/2+int(w*(oriRio/2)) subImg = img[crop_hs:crop_he,:,:] return subImg
def create_tensor(file1,mean_array): video_1 = cv2.VideoCapture(file1) # use cv to get frame number is not correct len_1 = int(video_1.get(cv2.cv.CV_CAP_PROP_FRAME_COUNT)) tensor_1 = np.zeros([3,len_1,112,112]) count = 0 ret = True while True: ret, frame_1 = video_1.read() if frame_1 is not None: tensor_1[:,count,:,:] = np.swapaxes(cv2.resize(cropImg(frame_1),(112,112)),0,2) - mean_array count = count+1 print count else: break pdb.set_trace() tensor = tensor_1[:,:count,:,:] return tensor
def create_tensor(file1,mean_array): video_1 = cv2.VideoCapture(file1) len_1 = int(video_1.get(cv2.cv.CV_CAP_PROP_FRAME_COUNT)) tensor_1 = np.zeros([3,len_1,112,112]) count = 0 ret = True while True: ret, frame_1 = video_1.read() if frame_1 is not None: tensor_1[:,count,:,:] = np.swapaxes(cv2.resize(cropImg(frame_1),(112,112)),0,2) - mean_array count = count+1 print count else: break return tensor_1
def create_tensor(file1,mean_array): video_1 = cv2.VideoCapture(file1) len_1 = int(video_1.get(cv2.cv.CV_CAP_PROP_FRAME_COUNT)) tensor_1 = np.zeros([3,len_1,112,112]) count = 0 ret = True while True: ret, frame_1 = video_1.read() if frame_1 is not None: tensor_1[:,count,:,:] = np.swapaxes(cv2.resize(cropImg(frame_1),(112,112)),0,2) - mean_array count = count+1 print count else: break tensor = tensor_1[:,:count,:,:] return tensor
def compute_xvvr(self): """ Return xvv(r) matrix """ r = np.array([i*self.dr for i in range(self.ngrid)]) k = self.get_k() xvvr = [["" for i in range(self.nsites)] for j in range(self.nsites)] for i in range(self.nsites): for j in range(self.nsites): xvvk_ij = self.xvv_data[:,i,j] xvvr_ij = pubfft.sinfti(xvvk_ij*k, self.dr, -1)/r # n_pots_for_interp = 6 # r_for_interp = r[1:n_pots_for_interp+1] # xvvr_for_interp = xvvr_ij[:n_pots_for_interp] # poly_coefs = np.polyfit(r_for_interp, xvvr_for_interp, 3) # poly_f = np.poly1d(poly_coefs) # xvvr[i][j] = [poly_f(0)] xvvr[i][j] = xvvr_ij return r, np.swapaxes(xvvr, 0, 2)
def compute_zr(self): """ Return z(r) matrix """ r = np.array([i*self.dr for i in range(self.ngrid)]) k, zk = self.compute_zk() print 'computed zk',zk.shape zr = [["" for i in range(self.nsites)] for j in range(self.nsites)] for i in range(self.nsites): for j in range(self.nsites): zk_ij = zk[1:,i,j] zr_ij = pubfft.sinfti(zk_ij*k[1:], self.dr, -1)/r[1:] #zr_ij = np.abs(fftpack.fft(zk_ij)) n_pots_for_interp = 6 r_for_interp = r[1:n_pots_for_interp+1] zr_for_interp = zr_ij[:n_pots_for_interp] poly_coefs = np.polyfit(r_for_interp, zr_for_interp, 3) poly_f = np.poly1d(poly_coefs) zr[i][j] = [poly_f(0)] zr[i][j].extend(zr_ij) return r, np.swapaxes(zr, 0, 2)
def test_rnn(): np.random.seed(0) num_layers = 50 seq_length = num_layers * 2 batchsize = 2 vocab_size = 4 data = np.random.randint(0, vocab_size, size=(batchsize, seq_length), dtype=np.int32) source, target = make_source_target_pair(data) model = RNNModel(vocab_size, ndim_embedding=100, num_layers=num_layers, ndim_h=3, kernel_size=3, pooling="fo", zoneout=False, wgain=1, densely_connected=True) with chainer.using_config("train", False): np.random.seed(0) model.reset_state() Y = model(source).data model.reset_state() np.random.seed(0) for t in range(source.shape[1]): y = model.forward_one_step(source[:, :t+1]).data target = np.swapaxes(np.reshape(Y, (batchsize, -1, vocab_size)), 1, 2) target = np.reshape(np.swapaxes(target[:, :, t, None], 1, 2), (batchsize, -1)) assert np.sum((y - target) ** 2) == 0 print("t = {} OK".format(t))
def trim_image(img, resnet_mean): h, w, c = img.shape if c != 3: raise Exception('There are gray scale image in data.') if h < w: w = (w * 256) / h h = 256 else: h = (h * 256) / w w = 256 resized_img = skimage.transform.resize(img, (h, w), preserve_range=True) cropped_img = resized_img[h // 2 - 112:h // 2 + 112, w // 2 - 112:w // 2 + 112, :] transposed_img = np.swapaxes(np.swapaxes(cropped_img, 1, 2), 0, 1) ivec = transposed_img - resnet_mean return ivec[np.newaxis].astype('float32')
def prediction_to_image(prediction, reshape=False): """ Converts a prediction map to the RGB image Args: prediction (array): the input map to convert reshape (bool, optional): True if reshape the input from Caffe format to numpy standard 2D array Returns: array: RGB-encoded array """ if reshape: prediction = np.swapaxes(np.swapaxes(prediction, 0, 2), 0, 1) image = np.zeros(prediction.shape[:2] + (3,), dtype='uint8') for x in xrange(prediction.shape[0]): for y in xrange(prediction.shape[1]): image[x,y] = label_to_pixel(prediction[x,y]) return image # In[6]:
def process_patches(images, net, transformer): """ Process a patch through the neural network and extract the predictions Args: images (array list): list of images to process (length = batch_size) net (obj): the Caffe Net transformer (obj): the Caffe Transformer for preprocessing """ # caffe.io.load_image converts to [0,1], so our transformer sets it back to [0,255] # but the skimage lib already works with [0, 255] so we convert it to float with img_as_float data = np.zeros(net.blobs['data'].data.shape) for i in range(len(images)): data[i] = transformer.preprocess('data', img_as_float(images[i])) net.forward(data=data) output = net.blobs['conv1_1_D'].data[:len(images)] output = np.swapaxes(np.swapaxes(output, 1, 3), 1, 2) return output
def prediction_to_image(prediction, reshape=False): """ Converts a prediction map to the RGB image Args: prediction (array): the input map to convert reshape (bool, optional): True if reshape the input from Caffe format to numpy standard 2D array Returns: array: RGB-encoded array """ if reshape: prediction = np.swapaxes(np.swapaxes(prediction, 0, 2), 0, 1) image = np.zeros(prediction.shape[:2] + (3,), dtype='uint8') for x in xrange(prediction.shape[0]): for y in xrange(prediction.shape[1]): image[x,y] = label_to_pixel(prediction[x,y]) return image # In[6]: # Simple sliding window function
def generate(epoch): latent = np.random.uniform(-1, 1, (batch_size, 100)) generated = (get_image(latent) + 1) / 2 manifold = np.zeros((32*8, 32*8, 3), dtype=theano.config.floatX) for indx in range(8): for indy in range(8): current_img = np.swapaxes(generated[indx * 8 + indy], 0, 2) current_img = np.swapaxes(current_img, 0, 1) manifold[indx * 32:(indx+1) * 32, indy * 32:(indy+1) * 32, :] = current_img manifold = np.asarray(manifold * 255, dtype='int32') manifold = scipy.misc.toimage(manifold, cmin=0, cmax=255) scipy.misc.imsave(result_folder + str(epoch) + '.png', manifold) #================Train================# # pretrain()
def test_seq2seq_inputs(self): inp = np.array([[[1, 0], [0, 1], [1, 0]], [[0, 1], [1, 0], [0, 1]]]) out = np.array([[[0, 1, 0], [1, 0, 0]], [[1, 0, 0], [0, 1, 0]]]) with self.test_session() as session: x = tf.placeholder(tf.float32, [2, 3, 2]) y = tf.placeholder(tf.float32, [2, 2, 3]) in_x, in_y, out_y = ops.seq2seq_inputs(x, y, 3, 2) enc_inp = session.run(in_x, feed_dict={x.name: inp}) dec_inp = session.run(in_y, feed_dict={x.name: inp, y.name: out}) dec_out = session.run(out_y, feed_dict={x.name: inp, y.name: out}) # Swaps from batch x len x height to list of len of batch x height. self.assertAllEqual(enc_inp, np.swapaxes(inp, 0, 1)) self.assertAllEqual(dec_inp, [[[0, 0, 0], [0, 0, 0]], [[0, 1, 0], [1, 0, 0]], [[1, 0, 0], [0, 1, 0]]]) self.assertAllEqual(dec_out, [[[0, 1, 0], [1, 0, 0]], [[1, 0, 0], [0, 1, 0]], [[0, 0, 0], [0, 0, 0]]])
def fit_line(self, x, y): # Takes x data (1d array) and y data (Nd array) # last dimension of y array is fit dimension # Solve linear least squares matrix equations for m, b of y = mx + b # Returns m, b # y_i = 1*b + x_i * m # Generate X matrix (X_i = [1, x_i]) X = np.ones((len(x), 2)) X[:,1] = x[:] # Solve "normal equations" for B that minimizes least sq # B = C*y = {((X^T)X)^(-1) * (X^T)} y C = np.linalg.inv(X.T.dot(X)).dot(X.T) if len(y.shape) < 2: B = C.dot(y) else: B = C.dot(np.swapaxes(y, -1, 1)) return B[1], B[0]
def swap_axis(imageobj, axis1, axis2): """ Swap axis of image object :param imageobj: :param axis1: :param axis2: :return: """ resol, origin = affines.to_matvec(imageobj.get_affine()) resol = np.diag(resol).copy() origin = origin imageobj._dataobj = np.swapaxes(imageobj._dataobj, axis1, axis2) resol[axis1], resol[axis2] = resol[axis2], resol[axis1] origin[axis1], origin[axis2] = origin[axis2], origin[axis1] affine = affines.from_matvec(np.diag(resol), origin) reset_orient(imageobj, affine)
def set_mosaic_fig(data, dim, resol, slice_axis, scale): """ Set environment for mosaic figure """ num_of_slice = dim[slice_axis] num_height = int(np.sqrt(num_of_slice)) num_width = int(round(num_of_slice / num_height)) # Swap axis data = np.swapaxes(data, slice_axis, 2) resol[2], resol[slice_axis] = resol[slice_axis], resol[2] dim[2], dim[slice_axis] = dim[slice_axis], dim[2] # Check the size of each slice size_height = num_height * dim[1] * resol[1] * scale / max(dim) size_width = num_width * dim[0] * resol[0] * scale / max(dim) # Figure generation slice_grid = [num_of_slice, num_height, num_width] size = [size_width, size_height] return data, slice_grid, size
def resize_images(x, shape): from scipy.misc import imresize reszie_func = lambda x, shape: imresize(x, shape, interp='bilinear') if x.ndim == 4: def reszie_func(x, shape): # x: 3D # The color channel is the first dimension tmp = [] for i in x: tmp.append(imresize(i, shape).reshape((-1,) + shape)) return np.swapaxes(np.vstack(tmp).T, 0, 1) imgs = [] for i in x: imgs.append(reszie_func(i, shape)) return imgs